将地图映射到Hive中的列

时间:2016-10-31 13:20:16

标签: hadoop hive

我正在寻找一种方法将Hive中的地图列表转换为多个列,并根据每个键动态插入值。

例如:

uid  map
001  {"key1":1,"key2":2}
002  {"key1":3}
003  {"key2":4,"key3":5}

我想渲染:

uid  key1  key2  key3
001    1     2
002    3
003          4     5

鉴于我拥有大量密钥,我希望能够这样做,而无需在查询中指定密钥,如

select uid,
       map['key1'] as key1,
       map['key2'] as key2,
       map['key3'] as key3
from my table

你们有没有解决方案或知道是否可能?

1 个答案:

答案 0 :(得分:1)

如果您动态想要将数据放在Hive中的列中,那么通常会运气不好。

如果您绝对想要动态执行此操作,可以使用外部工具(如python)执行此操作:

  1. 使用python确定您需要的密钥,并使用相关密钥创建表
  2. 解析每一行并在相关列中插入数据