【问题标题】:Converting multiple records from Hive table into a nested JSON将 Hive 表中的多条记录转换为嵌套 JSON
【发布时间】:2015-07-27 06:00:19
【问题描述】:

我在 hive 中有这样的表结构:

id  Name    Age
1    A      26
1    B      26

我想将这些记录转换为与 id 对应的嵌套 JSON,即对于每个 id ,我的代码应将针对它的记录组合成一个 JSON 对象。

请帮忙。

【问题讨论】:

  • 您希望输出为例如{"id" : 1, "members": ["A":26, "B":26]} ?
  • ya mattin,只有这样的东西..

标签: java json hive


【解决方案1】:

您可以使用内置的named_struct 函数将NameAge 组合成一个结构,例如:

named_struct("Name", Name, "Age", Age)

但是,为了通过共同的id 将这些聚合在一起,您需要一个聚合函数。 Hive 中的内置聚合函数都没有提供您需要的功能。这意味着您可能需要编写自定义聚合函数 (UDAF) 才能实现您的目标。该函数的用法如下:

select id, custom_aggregation_function(named_struct("Name", Name, "Age", Age)) from table group by id;

有关编写自己的 UDAF 的更多信息,请查看此处 https://cwiki.apache.org/confluence/display/Hive/GenericUDAFCaseStudy

或者,您可以寻找所需的 UDAF 的其他第三方实现。

查看来自 Brickhouse https://github.com/klout/brickhouse/wikicollectto_json UDF

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2018-04-06
    • 2023-01-20
    相关资源
    最近更新 更多