《hive编程指南》阅读笔记摘要(二)

第三章 数据类型和文件格式
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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值