第三章 数据类型和文件格式
hive中的数据类型包括基本数据类型和集合数据类型(array、map、struct),通常,关系型数据库中没有集合数据类型,而是用关系表关联表示集合。
原因在于: hive中将相关数据存储在一起,来减少磁盘寻址操作,提高性能。
基本数据类型都是对java中接口的实现,所以类型的具体行为细节和java中对应的类型完全一致,如string类型实现的就是java中String类型
TIMESTAMP表示UTC时间,可以是整数(距离unix新纪元时间的秒数);浮点数(距离unix新纪元时间的秒数,小数部分表示纳秒);字符串(JDBC兼容的java.sql.Timestamp格式,YYYY-MM-DD hh:mm:ss:fffffffff)
如果一个表的表结构中有3列,而实际的数据文件中每行记录有5列,那么在hive中最后两列会被省略掉
CSV:Comma-Separated Values,逗号分隔值
TSV:Tab-Separated Values,制表符分隔值
hive中 默认的行分隔符和字段分隔符
\n 文本文件中每行是一条记录
^A(\001) 用于分隔字段,\001是^A的八进制数
^B(\002) 用于分隔array或struct中的元素,或者作为map中每对key/value之间的分隔符
^C(\003) 用于分隔map中每对key/value中的key和value
在创建表结构时,如果使用默认的分隔符,就不必声明,否则,需要显式地声明
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
写时模式:数据在写入数据库时对模式进行检查,传统数据库都是写时模式;
读时模式:在查询阶段做数据验证,hive使用此模式;
对于hive表结构和文件不匹配的情况,hive会尽量做适配:
文件中字段数量少于表字段数量,字段值就用null表示
文件中字段数量多余表字段数量,文件中多余的字段自动截取
hive中的数据类型包括基本数据类型和集合数据类型(array、map、struct),通常,关系型数据库中没有集合数据类型,而是用关系表关联表示集合。
原因在于: hive中将相关数据存储在一起,来减少磁盘寻址操作,提高性能。
基本数据类型都是对java中接口的实现,所以类型的具体行为细节和java中对应的类型完全一致,如string类型实现的就是java中String类型
TIMESTAMP表示UTC时间,可以是整数(距离unix新纪元时间的秒数);浮点数(距离unix新纪元时间的秒数,小数部分表示纳秒);字符串(JDBC兼容的java.sql.Timestamp格式,YYYY-MM-DD hh:mm:ss:fffffffff)
如果一个表的表结构中有3列,而实际的数据文件中每行记录有5列,那么在hive中最后两列会被省略掉
CSV:Comma-Separated Values,逗号分隔值
TSV:Tab-Separated Values,制表符分隔值
hive中 默认的行分隔符和字段分隔符
\n 文本文件中每行是一条记录
^A(\001) 用于分隔字段,\001是^A的八进制数
^B(\002) 用于分隔array或struct中的元素,或者作为map中每对key/value之间的分隔符
^C(\003) 用于分隔map中每对key/value中的key和value
在创建表结构时,如果使用默认的分隔符,就不必声明,否则,需要显式地声明
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
写时模式:数据在写入数据库时对模式进行检查,传统数据库都是写时模式;
读时模式:在查询阶段做数据验证,hive使用此模式;
对于hive表结构和文件不匹配的情况,hive会尽量做适配:
文件中字段数量少于表字段数量,字段值就用null表示
文件中字段数量多余表字段数量,文件中多余的字段自动截取
表字段是数值型,文件中字段值有非数值型的字符串,字段值用null表示
--------------------------
微信公众号:IT人成长关注
大数据技术QQ群:485681776