Apache Spark解析分裂记录的json

问题描述:

据我所知,Apache spark要求json文件在一个字符串中只有一条记录。我有一个像这样的字段json文件拆分:Apache Spark解析分裂记录的json

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

我该如何使用Spark解析它?我需要预处理器还是可以提供自定义分离器?

+0

什么是您使用的Spark版本? – mrsrinivas

+0

@mrsrinivas 1.6.2。有关系吗? – Aguinore

+0

不确定。但想到根据Spark版本添加答案。 – mrsrinivas

Spark使用以换行符分隔来区分记录。这意味着当使用标准的json阅读器时,你需要每行有一条记录。

你可以做这样的事情在这个答案转换:https://stackoverflow.com/a/30452120/1547734

的基本想法是读作wholeTextFiles然后将其加载到一个JSON读者这会分析它,并flatmap结果。

当然,这里假设文件足够大,可以一次存储并解析一个文件。否则,你会需要更复杂的解决方案。

+0

所以如果我的文件足够大,不适合内存,它不是一个选项? – Aguinore

+0

没有。我能想到的唯一方法就是手动完成。如果您有一个这样的文件,则创建一个程序,一次读取一行,直到重建记录,然后将其作为单行写入输出(即预处理)。 –

+0

是的,我认为这是问这个问题之前唯一的方法。谢谢! – Aguinore