带有其他列的Hive UDTF

时间:2013-11-12 03:18:14

标签: hadoop hive

我希望这个问题的答案是“不”,但无论如何都要进行..

我有一个带有键和数组的表。典型的行可能如下所示:

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。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:5)

您可以将lateral viewexplode合并。
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