2015-04-06 39 views
0

我在Hive中有一個表A,其中一列包含json。Hive從一個表到另一個表的json數據

Table A 
    Columns - a1 

例如,列a1中的json有5個屬性(j1,j2,j3,j4,j5)。

我需要從表中的數據加載到另一個表B.

Table B 
     Columns - b1, b2, b3, b4, b5 

從A到B是如下加載數據的規則,

b1 - j1 
b2 - j2 
b3 - j3 
b4 - a1 (entire column of A) 

如何才能做到這一點?

而且有可能是一個需要從乙加載數據到另一個表C.

Today C 
    Columns - c1, c2, c3 

C1,C2,C3被加載的數據與來自列B1,B2,B的B3

c1 - b1 
c2 - b2 
c3 - b3 

但它可能需要另一列C4添加到C和C4都必須加載來自B.

c1 - b1 
c2 - b2 
c3 - b3 
c4 - one of the json attributes from column b4 of B 
的B4列的JSON屬性(J4)之一

這可能嗎?如果是這樣,你能給我一些指點嗎?

任何其他解決方案也很好。我只需要將JSON存儲在歷史記錄中,以便稍後可以檢索其屬性。在上面的示例中,表A是臨時表,因此是臨時表。

回答

0

Hive有一個名爲get_json_object的UDF。

它可以使用的

  • $ json的路徑:Root對象
  • 。 :兒童操作者
  • []:數組下標運算
  • *:通配符爲[]
+0

在性能方面,它是一個很好的選擇,以具有JSON本身作爲B中的列之一和然後使用UDF加載到C或在另一個表D中使用JSON-serde創建D的JSON,然後加入B,D加載到C? – learninghuman

+0

@ManikandanKannan我猜想使用JSON serde表要比調用UDF好,但之後的加入會花費您很多時間。所以如果UDF方式可以避免加入,那麼使用UDF會更好。 – amow

相關問題