【问题标题】:Parsing nested JSON using HiveQL使用 HiveQL 解析嵌套 JSON
【发布时间】:2014-06-18 08:22:15
【问题描述】:

我将以下嵌套的 JSON 格式数据存储为 syslog,我需要使用 HiveQL 进行查询并转换为 CSV 文件(用于显示图表):

"logAggregate": {"name-1":{"time":"74","count":"1"},"name-2":{"time":"2","count":"1"},"name-3 {"time":"2","count":"5"},"name-4":{"time":"22","count":"1"},
 。
 。
 。// and so on..
 。}

我正在寻找的输出格式如下:

name-1 time
name-2 time
name-3 time
.
.
. // so on

我对 Hive 比较陌生,所以不知道应该如何解析这些 JSON 数据。 我尝试摆弄横向视图和 json_tuple 但徒劳无功!

任何帮助将不胜感激!

【问题讨论】:

  • 您可以使用json-serde 来定义表并加载数据。详情是here。如果您遇到任何问题,请尝试此操作并更新问题。

标签: json hive hiveql


【解决方案1】:

查看这篇博客文章 (http://brickhouseconfessions.wordpress.com/2014/02/07/hive-and-json-made-simple/),它描述了如何使用 Brickhouse (http://github.com/klout/brickhouse) 中提供的 JSON UDF。

对于您的具体情况,您可能希望解析为地图,然后在地图上进行分解。

SELECT key,
map_index( value, "time") as time_value
FROM my_table
LATERAL VIEW explode_map( from_json( json, 'map<map<string,string>>') ) kv1 as k, v;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 2015-08-28
    • 2017-08-03
    • 2018-10-06
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多