一、数据类型
数据类型 | 所占字节 |
---|---|
TINYINT | 1byte,-128 ~ 127 |
SMALLINT | 2byte,-32,768 ~ 32,767 |
INT | 4byte,-2,147,483,648 ~ 2,147,483,647 |
BIGINT | 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
BOOLEAN | |
FLOAT | 4byte单精度 |
DOUBLE | 8byte双精度 |
STRING | |
BINARY | Hive0.8.0 |
TIMESTAMP | Hive0.8.0 |
DECIMAL | Hive0.11.0 |
CHAR | Hive0.13.0 |
VARCHAR | Hive0.12.0 |
DATE | Hive0.12.0 |
二、分隔符
Hive默认的分隔符。
分隔符 | 描述 |
---|---|
\n | 换行符,默认行分隔符 |
^A(Ctrl+A) | 文本中以八进制\001表示,列分隔符 |
^B(Ctrl+B) | 在文本中以八进制\002表示,作为分隔Array、Struct中的元素,或者Map中键值对的分隔 |
^C(Ctrl+C) | 在文本中以八进制\003表示,用于MAP中键值对的分隔 |
三、文件存储格式
TEXTFILE :即通常说的文本格式,默认长期,数据不做压缩,磁盘开销大、数据解析开销大。
SEQUENCEFILE :Hadoop提供的一种二进制格式,使用方便、可分割、可压缩,并且按行进行切分 。
RCFILE :一种行列存储相结合的存储方式,首先,其将数据按行分块,保证同一条记录在一个块上,避免读一条记录多个块。其次,块上的数据按照列式存储,有利于数据压缩和快速地进行列存取。
自定义文件格式 :用户通过实现InputFormat和OutputFormat来自定义输入输出格式。
四、建表
Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENTtable_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name,col_name, ...) [SORTED BY (col_name[SCC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path]
CREATE TABLE tablename( id int, name string ) PARTITIONED BY(dt string) --分区键和字段不能重复 --自定义分隔符 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' --字段分隔符 COLLECTION ITEMS TERMINATED BY '\002' --数组分隔符 结构体分隔符 MAP KEYS TERMINATED BY '\003' --map分隔符 LINES TERMINATED BY '\n' --行分隔符 STORED AS TEXTFILE;
五、加载数据
LOAD DATA LOCAL INPATH 'file_path' OVERWRITE INTO TABLE tablename;
有LOCAL表示从本地文件系统加载(文件会被拷贝到HDFS中)
无LOCAL表示从HDFS中加载数据(注意:文件直接被移动!!!)
OVERWRITE 表示是否覆盖表中数据(或指定分区的数据)(没有OVERWRITE 会直接APPEND,而不会滤重!)
六、空值判断
hive底层通过 alter table name SET SERDEPROPERTIES('serialization.null.format' = '\N'); 参数控制NULL的标识。
若设置为'\N',则底层保存为'\N'而显示的是NULL,此时查询空值的语句为: a is null 或者 a='\\N';同理,若设置为'NULL',则查询空值的语句为:a is null 或者 a='NULL'。
查询''空字符串,但字段不为null,需要通过语句:a='' 或者 length(a)=0 。
参考链接:
https://blog.csdn.net/xundh/article/details/71404376 Hive 数据类型和存储格式、建表操作
https://www.cnblogs.com/tugeler/p/5133019.html Hive - 建表和加载数据指令小结 以及使用Load data指令的注意事项
https://blog.csdn.net/jyl1798/article/details/41871013 hive 空值、NULL判断