hive使用中遇到的一些小问题及总结

博客都是用的多,登录的少了,端午放假闲来无事就登一登,顺便总结下自己在写hive sql时遇到的些小问题。

1,当你进行一个判断时,比如这样:
if(A in (20,21,22,30),‘YES’,‘NO’) AS A
先不管前后逻辑,这语句表面上看是不是没毛病,当然脑筋转的快或者基础不错的小伙子肯定想到我写在这儿就肯定是有个坑的呀,没错,我就在这儿翻了一次水。hive常用类型我们都知道为STRING,DECIMAL,BIGINT等等,在A字段为STRING类型时,这么匹配在hive中会进行转换,也就是结果能匹配上,但是会失真。
怎么个失真法呢,21和22能输出YES,20和30输出NO,具体原因你们去查吧,兴趣比结论重要,告诉你们了记忆会不够深刻。所以STRING要带有STRING的写法,引号’’。

2,GROUP BY的问题,这个我们都知道是用来进行过滤的,但是在应用的时候你有时候需要加上所有抽取的字段,有时候需要过滤部分字段。简单点的例子,我们需要求XX页面各个小时的登录总次数和登录总设备数,我们就需要这样:
SELECT 页面,小时,SUM(cnt) AS 登录次数,COUNT(1) AS 设备数 FROM
(
SELECT
页面,小时,user_id,count(1) AS cnt
FROM TABLE A WHERE 页面=‘XX’
GROUP BY
页面,小时,user_id
) t1
GROUP BY
页面,小时
;
这个是看了前辈的脚本,感觉思路很合适,写上。

3,有了再写吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值