首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ApacheSpark-`corrupt_record`阅读JSON

用ApacheSpark-`corrupt_record`阅读JSON
EN

Stack Overflow用户
提问于 2016-08-11 11:25:26
回答 4查看 42.6K关注 0票数 27

我有一个json文件,nodes,如下所示:

代码语言:javascript
复制
[{"toid":"osgb4000000031043205","point":[508180.748,195333.973],"index":1}
,{"toid":"osgb4000000031043206","point":[508163.122,195316.627],"index":2}
,{"toid":"osgb4000000031043207","point":[508172.075,195325.719],"index":3}
,{"toid":"osgb4000000031043208","point":[508513,196023],"index":4}]

我能够用Python读取和操作这条记录。

我正在尝试通过scala通过spark-shell读取这个文件。

通过这个教程,我可以看到通过sqlContext.read.json读取json是可能的。

代码语言:javascript
复制
val vfile = sqlContext.read.json("path/to/file/nodes.json")

但是,这会导致corrupt_record错误:

代码语言:javascript
复制
vfile: org.apache.spark.sql.DataFrame = [_corrupt_record: string]

有人能解释一下这个错误吗?我可以与其他应用程序一起读取和使用该文件,并且我确信它没有损坏和健全的json

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-11 11:48:07

Spark无法将JSON-数组读取到顶层的记录,因此您必须传递:

代码语言:javascript
复制
{"toid":"osgb4000000031043205","point":[508180.748,195333.973],"index":1} 
{"toid":"osgb4000000031043206","point":[508163.122,195316.627],"index":2} 
{"toid":"osgb4000000031043207","point":[508172.075,195325.719],"index":3} 
{"toid":"osgb4000000031043208","point":[508513,196023],"index":4}

正如在本教程中所描述的,您指的是:

让我们首先加载一个JSON文件,其中每一行都是一个JSON对象

理由很简单。Spark希望您传递一个包含大量JSON实体(每一行实体)的文件,这样它就可以分发它们的处理(每个实体,粗略地说)。

为了让它更清晰,下面是官方医生格式的引文

注意,作为json文件提供的文件不是典型的JSON文件。每一行必须包含一个独立的、独立的、有效的JSON对象。因此,一个常规的多行JSON文件通常会失败。

这种格式称为JSONL。基本上这是CSV的一个替代方案。

票数 30
EN

Stack Overflow用户

发布于 2018-09-23 00:30:10

由于Spark期望"JSON行格式“不是典型的JSON格式,因此我们可以通过指定以下内容来告诉spark读取典型的JSON:

代码语言:javascript
复制
val df = spark.read.option("multiline", "true").json("<file>")
票数 37
EN

Stack Overflow用户

发布于 2017-10-14 14:44:25

要将多行JSON读取为DataFrame:

代码语言:javascript
复制
val spark = SparkSession.builder().getOrCreate()

val df = spark.read.json(spark.sparkContext.wholeTextFiles("file.json").values)

不建议从wholeTextFiles文档中以这种方式读取大型文件。

小文件是首选,大文件也是允许的,但可能会导致不好的性能。

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

https://stackoverflow.com/questions/38895057

复制
相关文章

相似问题

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