一、Hive的数据类型
1、基本数据类型
整数: TINYINT、SMALLINT、INT、BIGINT
小数: FLOAT、DOUBLE、DECIMAL
文本: STRING、CHAR、VARCHAR
布尔: BOOLEAN
二进制: BINARY
时间: DATE、TIMESTAMP、INTERVAL
2、复杂的数据类型
1、数组(ARRAY)
ARRAY是具有相同类型变量的集合,这些变量称为数组的元素,每个数组元素都有一个索引编号,编号从零开始。
数据格式:['Apple','Orange','Mongo']
定义示例:array<string>
使用示例:a[0]='Apple'
2、映射(MAP)
MAP是一组键值对集合,key只能是基本类型,值可以是任意类型。
数据格式:{'A':'Apple','O':'Orange'}
定义示例:map<string,string>
使用示例:b['A']='Apple'
3、结构体(STRUCT)
STRUCT封装了一组有名字的字段,类型可以是任意的基本类型,结构体内的元素使用“.”来访问。
数据格式:{'Apple':2}
定义示例:struct<fruit:string,weight:int>
使用示例:c.weight=2
4、联合体(UNIONTYPE)
在给定的任何一个时刻 ,UNIONTYPE类型可以保存指定数据类型中的任意一种。
定义示例:uniontype<data_type,data_type......>
例如:
hive>create table union_test(
>foo UNIONTYPE<int,double,array<string>,struct<a:int,b:string>>);
在foo字段上支持如下文本输入:
0^B1
1^B2.0
2^Bthree^Cfour
3^B5^Csix
其中^B为集合元素分隔符,^C为MAP键分隔符。
将上述文本另存为文件“data.txt”,再加载至表union_test中。
hive>load data local inpath'/home/hadoop/data.txt' overwrite into table union_test;
>select *from union_test
输出结果为:
{0:1}
{1:2.0}
{2:['three','four']}
{3:{'a':5,'b':'six'}}
二、Hive DDL操作
- 创建数据库:CREATE DATABASE database_name;
- 删除数据库:DROP DATABASE database_name;
- 切换数据库:USE database_name;
- 创建表:CREATE TABLE table_name (column1 data_type, column2 data_type, ...);
- 删除表:DROP TABLE table_name;
- 查看表结构:DESCRIBE table_name;
- 查看表数据:SELECT * FROM table_name;
- 复制表结构:CREATE TABLE new_table_name LIKE existing_table_name;
- 向表中添加分区:ALTER TABLE table_name ADD PARTITION (partition_column=value);
- 删除表中的分区:ALTER TABLE table_name DROP PARTITION (partition_column=value);
- 修改表名:ALTER TABLE table_name RENAME TO new_table_name;
- 修改表结构(添加列):ALTER TABLE table_name ADD COLUMN new_column data_type;
- 修改表结构(修改列):ALTER TABLE table_name CHANGE column_name new_column_name new_data_type;
- 修改表结构(删除列):ALTER TABLE table_name DROP COLUMN column_name;
- 修改表属性:ALTER TABLE table_name SET TBLPROPERTIES ('key'='value');
三、Hive DML操作
- INSERT INTO: 将查询结果插入到表中。
- INSERT OVERWRITE: 将查询结果覆盖到表中。
- UPDATE: 更新表中的数据(Hive 0.14.0及更高版本支持)。
- DELETE: 删除表中的数据(Hive 0.14.0及更高版本支持)。
- MERGE INTO: 将数据从一个表合并到另一个表中(Hive 3.0.0及更高版本支持)。
- LOAD DATA: 从本地文件系统或HDFS加载数据到表中。
- EXPORT/IMPORT: 将表数据导出到HDFS或本地文件系统,或从HDFS或本地文件系统导入数据到表中。
- CTAS (CREATE TABLE AS SELECT): 创建新表并将查询结果插入其中。
- CREATE VIEW: 创建视图。
- DROP TABLE: 删除表。
- TRUNCATE TABLE: 清空表中的数据但保留表结构。
- ALTER TABLE: 修改表的属性,如更改列名、添加列、更改列类型等。
- MSCK REPAIR TABLE: 修复分区表的元数据信息。
- SHOW PARTITIONS: 显示表的分区信息。
- SHOW TABLES: 显示数据库中的表列表。
- DESCRIBE: 显示表的结构信息。
- ANALYZE TABLE: 收集表的统计信息,用于优化查询性能。
- CACHE TABLE/UNCACHE TABLE: 缓存/取消缓存表的数据。