json - 如何使用 JSON 数据制作 HIVE 表?

标签 json hadoop hive amazon-emr emr

我想用一些 JSON 数据(嵌套)创建一个 Hive 表并对其运行查询?这甚至可能吗?

我已经将 JSON 文件上传到 S3 并启动了一个 EMR 实例,但我不知道在 hive 控制台中输入什么才能让 JSON 文件成为 Hive 表?

有没有人有一些示例命令让我开始,我找不到任何对 Google 有用的东西...

最佳答案

实际上没有必要使用 JSON SerDe。这里有一篇很棒的博文(我与作者没有任何关系):

http://pkghosh.wordpress.com/2012/05/06/hive-plays-well-with-json/

其中概述了使用内置函数 json_tuple 在查询时(不是在表定义时)解析 json 的策略:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-json_tuple

因此,基本上,您的表架构只是将每一行加载为单个“字符串”列,然后根据每个查询的需要提取相关的 json 字段。例如该博客文章中的此查询:

SELECT b.blogID, c.email FROM comments a LATERAL VIEW json_tuple(a.value, 'blogID', 'contact') b 
AS blogID, contact  LATERAL VIEW json_tuple(b.contact, 'email', 'website') c 
AS email, website WHERE b.blogID='64FY4D0B28';

根据我的经验,这已被证明更可靠(我遇到了处理 JSON serdes 的各种神秘问题,尤其是嵌套对象)。

关于json - 如何使用 JSON 数据制作 HIVE 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11479247/

相关文章:

json - 为什么这个字典包含这么多#undefs?如何忽略它们?

java - 如何解析JSON文件?

java - 运行简单的Hadoop Map/Reduce教程

apache-spark - Hive 数据库仅列出默认数据库

java - Jackson双向嵌套对象设置

json - 从 jsonb 成员更新整数列失败,返回 : column is of type integer but expression is of type jsonb

hadoop - 我需要将PipelinedRDD存储到hadoop文件中

hadoop - 为什么我的 hadoop 命令不起作用?

scala - 对 Spark 数据框/Hive 结果集进行排序

hadoop - 在 s3 中的多个 Parquet 文件之上创建 Hive 表