apachespark解析带有拆分记录的json

apachespark解析带有拆分记录的json,json,apache-spark,Json,Apache Spark,据我所知,ApacheSpark要求json文件在一个字符串中包含一条记录。我有一个按字段拆分的json文件,如下所示: {"id": 123, "name": "Aaron", "city": { "id" : 1, "title": "Berlin" }} {"id": 125, "name": "Bernard", "city": { "id" : 2, "title": "Paris" }} {...many more lines ...} 如何使用Sp

据我所知,ApacheSpark要求json文件在一个字符串中包含一条记录。我有一个按字段拆分的json文件,如下所示:

{"id": 123,
"name": "Aaron",
"city": {
    "id" : 1,
    "title": "Berlin"
}}
{"id": 125,
"name": "Bernard",
"city": {
    "id" : 2,
    "title": "Paris"
}}
{...many more lines
...}

如何使用Spark解析它?我需要预处理器吗?或者我可以提供自定义拆分器吗?

Spark使用按换行符拆分来区分记录。这意味着在使用标准json读取器时,每行需要一条记录

您可以通过执行以下操作进行转换:

基本思想是将其作为一个整体读取,然后将其加载到一个json读取器,该读取器将对其进行解析并平面映射结果


当然,这假设文件足够大,可以放在内存中,并且一次解析一个文件。否则您将需要更复杂的解决方案。

您使用的Spark版本是什么?@mrsrinivas 1.6.2。这有关系吗?不确定。但考虑过根据Spark版本添加答案。所以,如果我的文件足够大,无法放入RAM,那么这不是一个选项?不。我唯一能想到的方法是手动执行。如果您有一个这样的文件,请创建一个程序,一次读取一行,直到它重建记录,然后将其作为一行写入输出(即预处理)。是的,我认为这是提问之前的唯一方法。非常感谢。