首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JSON插入Hadoop

将JSON插入Hadoop
EN

Stack Overflow用户
提问于 2018-06-19 16:15:48
回答 2查看 3.6K关注 0票数 0

我每天都有很多数据(JSON字符串)(大约150-200B)。

我想将JSON插入到Hadoop中,最好的方法是什么(我需要快速插入和快速查询JSON字段)?

我是否需要使用hive并为我的JSON创建Avro方案?或者,我是否需要将JSON作为字符串插入到特定列中?

EN

回答 2

Stack Overflow用户

发布于 2018-06-19 20:49:08

如果你想使数据在Hive中可用,以便在其上执行大部分聚合,我建议使用spark的以下方法之一。

如果您有多行json文件

代码语言:javascript
运行
复制
var df =  spark.read.json(sc.wholeTextFiles("hdfs://ypur/hdfs/path/*.json").values)
df.write.format("parquet").mode("overwrite").saveAsTable("yourhivedb.tablename")

如果您有单行的json文件

代码语言:javascript
运行
复制
val df = spark.read.json("hdfs://ypur/hdfs/path/*.json")
df.write.format("parquet").mode("overwrite").saveAsTable("yourhivedb.tablename")

Spark会自动为你推断出表格模式。如果您使用的是cloudera发行版,您将能够使用impala读取数据(取决于您的cloudera版本,它可能不支持复杂的结构)

票数 1
EN

Stack Overflow用户

发布于 2018-06-19 21:01:16

我想把JSON插入Hadoop

你只要把它放到HDFS中...由于您拥有一段时间内的数据,因此您需要创建分区以供Hive读取

代码语言:javascript
运行
复制
jsondata/dt=20180619/foo.json
jsondata/dt=20180620/bar.json

我是否需要使用hive并为我的

创建Avro方案?

不是的。不知道你在哪里混淆了Avro和JSON。现在,如果您可以将JSON转换为具有模式的已定义Avro,那么这将有助于改进Hive查询,因为查询结构化二进制比解析JSON文本更好。

是否需要将JSON作为字符串插入到特定列中?

不推荐使用。你可以,但是你不能通过蜂窝的JSON Serde support查询它

别忘了上面的结构,你需要用到PARTITIONED BY (dt STRING)。为了在表中为现有文件创建分区,您需要手动(每天)运行一个MSCK REPAIR TABLE命令

JSON有

作为字符串(来自kafka)

不要使用Spark来解决这个问题(至少不要重复发明轮子)。我的建议是使用Confluent的HDFS Kafka Connect,它支持Hive表的创建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50923658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档