2016-10-05 52 views
0

我有一個蜂巢表創建一個嵌套的蜂巢表:蜂巢 - 表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  | 

從表A,我想這樣的一個表來結束 - 表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的嵌套版本,使得對於給定的編號,所有從其每個夥伴的數據被分組爲一列。

我有兩個問題:

  1. 如何創建從表A表B?
  2. 如何將表B轉換爲JSON文檔,以便我可以將文檔加載到任何NOSQL數據庫中?

真的很感謝這方面的幫助。謝謝!

回答

0

簡單實現這是使用UDAF - 用戶定義的聚合函數。你可以編寫自定義函數來簡化事情。這裏有一些你可以使用內置函數的東西。試一試。

選擇ID,CONCAT( 「[」,CONCAT_WS(」 'collect_set(CONCAT(''」,合作伙伴, '「:{ 」recent_use「:',recent_use」, 「伯爵」: 」,伯爵,‘}’)))‘]’)作爲 collJ從表A組由ID

上面的SQL將得到字符串ID和collJ你尋找後,可以使用get_json_object函數將轉換爲JSON對象。

參考

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

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