Hive 基础 Apache Hive 概述什么是Hive?Apache Hive 是一款建立在 Hadoop 之上的开源数据仓库系统,可以将存储在 Hadoop 文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为 Hive查询语言(HQL),用于访问和分析存储在 Hadoop 文件中的大型数据集。 Hive核心是将 HQL转换为MapReduce 程序,然后将程序提交 2025-01-01 Hive #Hive
Hive 性能优化 Hive表设计优化分区表Hive查询基本原理Hive的设计思想是通过元数据将HDFS上的文件映射成表,基本的查询原理是当用户通过HQL语句对Hive中的表进行复杂数据处理和计算时,默认将其转换为分布式计算MapReduce程序对HDFS中的数据进行读取处理的过程。 例如,当在Hive中创建一张表tb_login并关联HDFS上的文件,用于存储所有用户的登录信息,当对这张表查询数据时,Hive中的实 2025-01-01 Hive #Hive
Hive3 新特性 Hive On TezHive 引擎的支持Hive作为数据仓库工具,底层的计算由分布式计算框架实现,目前Hive支持三种计算引擎,分别是MapReduce、Tez、Spark。Hive中默认的计算引擎是MapReduce,由hive.execution.engine参数属性控制。 Hive从2.x版本开始就提示未来的版本中将不再支持底层使用MapReduce,推荐使用Tez或者Spark引擎来代替 2025-01-01 Hive #Hive
数据仓库基础 数据仓库数据仓库概念数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用,这也是为什么叫“仓库”,而不叫“工厂”的 2025-01-01 Hive #Hive
10-viper 解析 yaml 文件 官方 GitHub:https://github.com/spf13/viper/ 1、介绍Viper 是适用于Go应用程序(包括Twelve-Factor App)的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。目前Star 15.8k,它支持以下特性: 设置默认值 从JSON、TOML、YAML、HCL、envfile和Java propert 2024-12-09 Go #Go
Go 判断是否为空 1234567891011121314151617181920212223242526272829type Product struct { name, category string price float64 upc int64}func main() { // 判断数组是否为空 arr := 2024-12-06 Go #Go
Go 判断是否存在 字符串是否存在于指定字符串数组中Golang中是没有类似 Python in_array 函数的,所以要判断一个字符串数组中是否包含一个特定的字符串,就需要自行处理 12345678func inArray(a string,b []string) bool { for _,value := range b { if a == value { 2024-12-06 Go #Go
Go 文件操作 1、os 包1.1、创建文件1234567f, err := os.Create("test.txt")if err != nil { fmt.Println(err) return}fmt.Println(f) // 打印文件指针f.Close() // 打开的资源在不使用时必须关闭 使用 Create() 创建文件时: 如果文件不存在,则创建文 2024-12-06 Go #Go
01-Gorm 快速使用 1. 库安装1go get -u github.com/jinzhu/gorm 2. 数据库连接1234567891011121314import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")var db *gorm.DBfunc init() { var err erro 2024-12-04 Go #Go
01-概览index The fantastic ORM library for Golang aims to be developer friendly. 特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方法 支持 Preload、Joins 的预加载 事务,嵌套事务, 2024-12-04 Go #Go
02-声明模型models GORM 通过将 Go 结构体(Go structs) 映射到数据库表来简化数据库交互。 了解如何在GORM中定义模型,是充分利用GORM全部功能的基础。 模型定义模型是使用普通结构体定义的。 这些结构体可以包含具有基本Go类型、指针或这些类型的别名,甚至是自定义类型(只需要实现 database/sql 包中的Scanner和Valuer接口)。 考虑以下 user 模型的示例: 1234567 2024-12-04 Go #Go
03-连接到数据库 GORM 官方支持的数据库类型有:MySQL, PostgreSQL, SQLite, SQL Server 和 TiDB MySQL12345678910import ( "gorm.io/driver/mysql" "gorm.io/gorm")func main() { // 参考 https://github.com/go-sql-driver/mysql#dsn-data 2024-12-04 Go #Go
11-创建 创建记录1234567user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}result := db.Create(&user) // 通过数据的指针来创建user.ID // 返回插入数据的主键result.Error // 返回 errorresult.RowsAf 2024-12-04 Go #Go
12-查询 检索单个对象 First、Take、LastGORM 提供了 First、Take、Last 方法,以便从数据库中检索单个对象。当查询数据库时它添加了 LIMIT 1 条件,且没有找到记录时,它会返回 ErrRecordNotFound 错误 123456789101112131415161718// 获取第一条记录(主键升序)db.First(&user)// SELECT * FROM 2024-12-04 Go #Go
12-高级查询 智能选择字段在 GORM 中,您可以使用 Select 方法有效地选择特定字段。这在 Model 字段较多但只需要其中部分的时候尤其有用,比如编写API响应。 12345678910111213141516type User struct { ID uint Name string Age int Gender string // 很多很多字段}ty 2024-12-04 Go #Go
13-更新 保存所有字段Save 会保存所有的字段,即使字段是零值 123456db.First(&user)user.Name = "jinzhu 2"user.Age = 100db.Save(&user)// UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_at = '2013-11-17 2024-12-04 Go #Go
14-删除 删除一条记录删除一条记录时,删除对象需要指定主键,否则会触发 批量删除,例如: 1234567// Email 的 ID 是 `10`db.Delete(&email)// DELETE from emails where id = 10;// 带额外条件的删除db.Where("name = ?", "jinzhu").Delete(&email)// DELETE from e 2024-12-04 Go #Go
15-原生 SQL 和 SQL 生成器 原生 SQL原生查询 SQL 和 Scan 12345678910111213141516type Result struct { ID int Name string Age int}var result Resultdb.Raw("SELECT id, name, age FROM users WHERE id = ?", 3).Scan(&result 2024-12-04 Go #Go
21-belongs_to Belongs Tobelongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。 例如,您的应用包含 user 和 company,并且每个 user 能且只能被分配给一个 company。下面的类型就表示这种关系。 注意,在 User 对象中,有一个和 Company 一样的 CompanyID。 默认情况下, CompanyID 被隐含地用来在 2024-12-04 Go #Go
22-has_one Has Onehas one 与另一个模型建立一对一的关联,但它和一对一关系有些许不同。 这种关联表明一个模型的每个实例都包含或拥有另一个模型的一个实例。 例如,您的应用包含 user 和 credit card 模型,且每个 user 只能有一张 credit card。 声明1234567891011// User 有一张 CreditCard,UserID 是外键type User stru 2024-12-04 Go #Go