我将以下json存储在配置单元中

 {"key":123,"c1":["s1","s2","s3"],"c2":{"k1":"v1","k2":"v2"}}
 {"key":456,"c1":["s4","s5","s6"],"c2":{"k3":"v3","k4":"v4"}}

现在我要查询给定的配置单元json,以便获得以下输出
输出:
key c1 c1 c1 c2 c2 c2 c2 123 s1 s2 s3 k1 v1 k2 v2 456 s4 s5 s6 k3 v3 k4 v4
那么在 hive 中怎么可能或者我缺少输出结构?

最佳答案

您可以使用Brickhouse JSON UDFS(http://github.com/klout/brickhouse)将JSON解析为Hive结构,然后访问这些值。

SELECT strct.key,
       strct.c1[ 0 ], strct.c1[1], strct.c1[2],
       map_keys( strct.c2 )[ 0 ], map_values( strct.c2)[0],
       map_keys( strct.c2 )[ 1 ], map_values( strct.c2)[1]
FROM (
  SELECT from_json( json_str,
        named_struct("key", 0, "c1", array(""), "c2", map("","") )) as strict
  FROM json_table
) js;

http://brickhouseconfessions.wordpress.com/2014/02/07/hive-and-json-made-simple/上阅读Brickhouse自白博客,以获取更多信息。

关于json - 配置单元查询嵌套的json,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22712882/

10-16 02:57