Hive 一些操作记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/amyacker/article/details/88415619

1.无效ID在关联时的数据倾斜问题

  • 解决方法:函数过滤 null

把空值的id变成一个字符串加上随机数,就能把倾斜的数据分到不同的Reduce上,从而解决数据倾斜问题。因为空值不参与关联,即使分到不同 的 Reduce 上,也不会影响最终的结果。

SELECT * FROM tableName1 a LEFT OUTER 
JOIN tableName2 b ON 
CASE WHEN a.id IS NULL THEN CONCAT(‘hive_temp_id’,RAND()) ELSE a.id END =b.user_id;

2.Hive不允许直接访问非group by字段

  • 对于非group by字段,可以使用collect_set函数收集这些字段,返回一个数组;
SELECT a,b FROM tableName GROUP BY a	//Expression not in GROUP BY key 'b'

SELECT a,collect_set(b) FROM tableName GROUP BY a	//正确的使用方式
  • collect_set函数的其他用法:

使用数字下标,可以直接访问数组中的元素

填坑中

猜你喜欢

转载自blog.csdn.net/amyacker/article/details/88415619
今日推荐