原始数据格式如下:id col1 col2
1 a1 t1
1 b1 c1
2 a2 d2
2 l2 g2
2 t2 u2
3 b3 a3
3 z3 p3
想将相同 id 的行聚集起来,最后的效果如下:
id new_col
1 [a1:t1, b1:c1]
2 [a2:d2, l2:g2, t2:u2]
3 [b3:a3, z3:p3]
不用在意a1,b2之类的字符,它只代表某个字段值。
我该使用哪种方式来得到上面的结果呢?
我试过的方法有:
1、UDF,但是UDF只能处理单行数据,没法聚集多行数据;
2、UDAF,但UDAF只能用Java写,无法支持Python,我们要求使用Python来写
3、想通过类似于reduce端join的方式来完成,只不过在reduce端将最后的join操作改为:根据相同的id进行拼接,但是hive无法支持这种方式。因为想直接写mapreduce来读取hive上的文件(数据表在hdfs上),但是文件格式并不是text,所以无法直接用mapreduce来完成。
请大家指教下,这个问题该怎么破,非常感谢。。。。
|
|