hive中一些实用的小技巧

1. 忽略错误,继续执行下面的语句,特别是在使用hive -f "xxx.sql"时候比较实用:

 

    hive --hiveconf hive.cli.errors.ignore=true -f "xxx.sql"

 

2. 虚拟列:

    INPUT__FILE__NAME(输入文件的路径)

    BLOCK__OFFSET__INSIDE__FILE(记录在文件中的偏移量)

 

    select id,INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE from lxw_test3 limit 10;

 

 

3. select结果中显示列名:

    set hive.cli.print.header=true;

    注意在hive0.7中这个参数有bug,在设置为true之后使用use来切换database,就会触发这个bug

 

 

 

Exception in thread "main" java.lang.NullPointerException
        at org.apache.hadoop.hive.cli.NewCliDriver.processCmd(NewCliDriver.java:178)
        at org.apache.hadoop.hive.cli.NewCliDriver.processLine(NewCliDriver.java:243)
        at org.apache.hadoop.hive.cli.NewCliDriver.main(NewCliDriver.java:469)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:186)

 

4. 判断一个字段是否全数字:

 

select mobile from woa_login_log_his where pt = '2012-01-10' and mobile rlike '^\\d+$' limit 50;
 

 

5. hive中最高精度的数据类型是double,只精确到小数点后16位,在做除法运算的时候要特别注意:

 

 

select ceil(28.0/6.999999999999999999999) from t_lxw_test1 limit 1;    结果为4
select ceil(28.0/6.99999999999999) from t_lxw_test1 limit 1;           结果为5
 

 

6. 查看N天前的日期:

 

select from_unixtime(unix_timestamp('20111102','yyyyMMdd') - N*86400,'yyyyMMdd') from t_lxw_test1 limit 1;
 

 

7. 获取两个日期之间的天数/秒数/分钟数等等:

 

select ( unix_timestamp('2011-11-02','yyyy-MM-dd')-unix_timestamp('2011-11-01','yyyy-MM-dd') ) / 86400  from t_lxw_test limit 1;
 

 

 

不定期更新中。。。。。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值