hive使用心得和常见问题


1、hive属于java体系,数据编码是unicode,所以从生产库抽过来的GB18030极其子编码集的数据,load到hive是可能出现乱码的。幸好有mapreduce的存在,我们可以写一个数据清洗程序,不仅可以完成转码功能,还可以格式化为hive可用的数据,比如行分隔符,列分隔符的替换,记录字段个数的检查等。

文件小的话也可以使用命令:iconv -f GBK -t UTF8 cui.dat > cui2.dat_utf8


2、hive表的分割符只支持一个字符,默认是\001,即asc码的第一个字符。


3、hive语法类似mysql,但没有查看创建表语句功能,可以通过元数据表之间的关联来拼接一个建表语句,做成以脚本命令运行的方式。


4、hive ql 中 ”不存在“ 写法为 exist not ,而不是关系型库的not exist。


5、hive中的函数均为java实现的方法,扩展此功能需要写一个UDF的子类,覆盖evaluate方法,重新编译hive即可。


6、hive中使用多个union all时最外面还要包一层select,否则会报错。


7、hive以hdfs文件的方式存在,不支持追加的功能,但可以通过建表时指定多个分区变通实现追加功能。


8、hive中alter开头的命令格式为:use database;alter 语句 。而不能写成这样:alter table  database.tablename...


9、hive 两个表join操作,on 后面只能有 “=” 关系,不能有大于,小于,like等其他的,可以用子查询变通。


10、hive 中,对于select count(distinct   c1)  ......group by  c1 语句,会导致执行的错误,在这里写count(distinct   c1) 实际上等于1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值