我希望这个问题的答案是“不”,但无论如何都要进行..
我有一个带有键和数组的表。典型的行可能如下所示:
98c28560-4b48-11e3-9c12-07373d47725c segment-a,segment-b,segment-c
我希望这一行产生三行:
98c28560-4b48-11e3-9c12-07373d47725c segment-a
98c28560-4b48-11e3-9c12-07373d47725c segment-b
98c28560-4b48-11e3-9c12-07373d47725c segment-c
使用最新版本的Hive中提供的标准UDF。
有办法做到这一点吗?
答案 0 :(得分:5)
您可以将lateral view与explode合并。
E.g:
给定一个 test 表 guid(string)和 segs(array< string>)
select * from test
99999999-4b48-11e3-9c12-07373d47725c ["segment-a1","segment-b1","segment-c1"]
98c28560-4b48-11e3-9c12-07373d47725c ["segment-a2","segment-b2","segment-c2"]
select guid, seg from test lateral view explode(segs) x as seg;
99999999-4b48-11e3-9c12-07373d47725c segment-a1
99999999-4b48-11e3-9c12-07373d47725c segment-b1
99999999-4b48-11e3-9c12-07373d47725c segment-c1
98c28560-4b48-11e3-9c12-07373d47725c segment-a2
98c28560-4b48-11e3-9c12-07373d47725c segment-b2
98c28560-4b48-11e3-9c12-07373d47725c segment-c2
注意:
Hive 0.12