当前位置: 首页 > 面试题库 >

用Apache Spark读取JSON-`corrupt_record`

段阳夏
2023-03-14
问题内容

我有一个json文件,nodes看起来像这样:

[{"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

从这个教程中,我可以看到,它可以读取json通过sqlContext.read.json

val vfile = sqlContext.read.json("path/to/file/nodes.json")

但是,这会导致corrupt_record错误:

vfile: org.apache.spark.sql.DataFrame = [_corrupt_record: string]

任何人都可以阐明这个错误吗?我可以与其他应用程序一起阅读和使用该文件,并且我相信它不会损坏且不会发出声音json


问题答案:

Spark无法将JSON数组读取到顶级记录,因此您必须通过:

{"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的替代方法。



 类似资料:
  • 我正在尝试使用Boost来解析JSON文件。这是 JSON 文件 和一个MWE 问题:我目前知道如何读取最外层的变量<code>a。然而,我在阅读其他级别(如<code>b_a、b_b_a和b_d_a</code>等)时遇到了困难。如何使用Boost实现这一点?我不一定要寻找涉及循环的解决方案,只是想弄清楚如何“提取”内部变量。 如果其他库是最佳的,我愿意使用它们。但是到目前为止,Boost在我看

  • 问题内容: 我正在尝试从JSON文件读取值到数组以进行进一步处理。我正在使用JSON-Smart 1.2.0库。由于某些限制,我不能使用2.0版本。 我收到以下异常。 我什至尝试使用JSONArray而不是JSONObject。我在这儿做错了什么?这是读取JSON内容的正确方法吗? 以下是Java代码。 以下是json文件的内容。 问题答案: 您的JSON包含一个具有单个对象元素的数组,因此您应该

  • 问题内容: 在发布此问题之前,我环顾了四周,因此如果在另一个帖子上我道歉,这只是我的第二个问题,因此如果我没有正确设置此问题的格式,则表示歉意。 我创建了一个非常简单的Web服务,该服务需要获取发布值并返回JSON编码的数组。一切都很好,直到被告知我需要使用内容类型为application / json的表单数据来发布。从那时起,我无法从Web服务返回任何值,这绝对与我过滤其后值有关。 基本上,在

  • 问题内容: 我正在使用jsoup抓取一些HTML数据,效果很好。现在,我需要提取一些JSON内容(仅JSON,而不是HTML)。我可以使用jsoup轻松做到这一点,还是必须使用另一种方法来做到这一点?jsoup执行的解析是对JSON数据进行编码,因此无法使用Gson正确解析。 谢谢! 问题答案: 虽然很棒,但Jsoup是HTML解析器,而不是JSON解析器,因此在这种情况下它没有用。如果您尝试过,

  • 问题内容: 我真的很努力地尝试将JSON文件读入Swift,以便可以使用它。我花了两天的大部分时间来重新搜索并尝试不同的方法,但到目前为止还没有运气,因此我已经注册了StackOverFlow,以查看是否有人可以向我指出正确的方向..... 我的JSON文件称为test.json,其中包含以下内容: 该文件直接存储在文档中,我使用以下代码进行访问: 如果有人可以在正确的方向上向我推销我如何反序列化

  • 问题内容: Solr以以下JSON格式返回响应。 使用PHP读取student_id,student_name的简单方法是什么? 问题答案: 使用将其转换为一个对象。 然后使用来遍历“文档”。 然后,您可以使用和访问字段。