2016-10-05 4 views
0

からネストされたHiveのテーブルを作成します。表Aから、私はこのようなテーブルで終わるしたいハイブ - 次のように表A - 私はハイブテーブルを持っている別の非ネストされたハイブテーブル

id | partner | recent_use | count | 
1 | ab  | 20160101 | 5  | 
1 | cd  | 20160304 | 12 | 
2 | ab  | 20160205 | 1  | 
2 | cd  | 20150101 | 2  | 
3 | ab  | 20150401 | 4  | 

- 表B:

id | partner | 
1 | [ ab : { recent_use:20160101, count:5 } , cd : { recent_use:20160304, count:12 } ] 
2 | [ ab : { recent_use:20160205, count:1 } , cd : { recent_use:20150101, count:2 } ] 
3 | [ ab : { recent_use:20150401, count:4 } ] 

基本的に、表B、表A指定されたIDのために、パートナーの各々からのすべてのデータを1つの列にグループ化されるように、ネストされたバージョンです。

  1. がどのように私は表Aから表Bを作成することができます。

    私は2つの質問がありますか?

  2. テーブルBをJSONドキュメントに変換して、ドキュメントを任意のNOSQL DBに読み込むことはできますか?

本当にありがとうございます。ありがとう!

答えて

0

シンプルにこれを実現するには、UDAFユーザー定義集計関数を使用します。物事をシンプルにするカスタム関数を書くことができます。ここでは、組み込み関数を使用することができるいくつかのことがあります。試してみる。

選択ID、CONCAT( "["、CONCAT_WS(」 'collect_set(CONCAT(' "」、パートナー、 '":{ "recent_use":'、recent_use、 '、 "カウント": 」、) "}"、カウント))、 "]") collJようにtableAグループからIDによる

SQLの上あなたはそれがに変換するget_json_object機能を使用することができます後を探して、文字列にIDとcollJを取得しますJSONオブジェクト。

リファレンス

https://www.qubole.com/resources/cheatsheet/hive-function-cheat-sheet/

https://cwiki.apache.org/confluence/display/Hive/GenericUDAFCaseStudy

関連する問題