2

我希望这个问题的答案是“不”,但无论如何。

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

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。

有没有办法做到这一点?

4

1 回答 1

5

您可以将横向视图爆炸相结合。
例如:给定一个包含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

于 2013-11-12T13:36:45.377 回答