【问题标题】:Hive json data from one table to anotherHive json 数据从一个表到另一个表
【发布时间】:2015-04-06 22:41:47
【问题描述】:

我在 Hive 中有一个表 A,其中一列 a1 包含 json。

Table A
   Columns - a1

例如a1列的json有5个属性(j1,j2,j3,j4,j5)。

我需要将数据从表 A 加载到另一个表 B。

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

从A加载数据到B的规则如下,

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

如何做到这一点?

并且可能需要将数据从 B 加载到另一个表 C。

Today C 
  Columns - c1, c2, c3 

c1、c2、c3 加载了来自 B 的 b1、b2、b3 列的数据

c1 - b1
c2 - b2
c3 - b3

但可能需要将另一列 c4 添加到 C,并且 c4 必须使用 B 的 b4 列中的一个 json 属性 (j4) 加载。

c1 - b1
c2 - b2
c3 - b3
c4 - one of the json attributes from column b4 of B

这可能吗?如果有的话,能否指点一下?

任何其他解决方案也可以。我想要的只是将 JSON 存储在历史记录中,以便以后可以检索到它的属性。在上面的示例中,表 A 是一个临时表,因此是临时的。

【问题讨论】:

    标签: json hive load


    【解决方案1】:

    Hive 有一个名为 get_json_object 的 UDF。

    可以使用json路径

    • $:根对象
    • 。 : 子运算符
    • [] : 数组的下标运算符
    • *:[] 的通配符

    【讨论】:

    • 就性能而言,将 JSON 本身作为 B 中的列之一,然后使用 UDF 加载到 C 中,或者将 JSON 放入另一个表 D 中并使用 D 创建,这是一个不错的选择吗? JSON-serde,然后加入 B,D 加载到 C 中?
    • @ManikandanKannan 我想使用 JSON serde 表比调用 UDF 更好,但是之后的连接会花费你很多时间。所以如果 UDF 方式可以避免连接,使用 UDF 是更好。
    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2015-05-21
    • 2012-04-07
    • 2017-01-14
    相关资源
    最近更新 更多