2016-10-31 3 views
1

ハイブのマップリストを複数の列にピボットさせ、各キーに応じて値を動的に挿入する方法を探しています。私はレンダリングするハイブのピボットマップへのマップ

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

ハイブの列にデータを動的に配置する場合、通常は不運です。あなたは絶対に動的にこれをしたい場合は

、ここにあなたが(Pythonのような)外部ツールで何ができるかです:

  1. 使用のpythonあなたが必要とするどのキーを決定し、該当するキーを持つテーブルを作成します
  2. 解析私が恐れていたものですが、私は必ずたかった各行と関連する列にデータを挿入
+0

。ありがとう – zemir