【问题标题】:Apache spark parsing json with splitted recordsApache spark解析带有拆分记录的json
【发布时间】:2017-02-27 06:11:13
【问题描述】:

据我所知,Apache spark 要求 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 版本是什么?
  • @mrsrinivas 1.6.2。有关系吗?
  • 不确定。但想根据 Spark 版本添加答案。

标签: json apache-spark


【解决方案1】:

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

您可以通过执行以下操作来转换:https://stackoverflow.com/a/30452120/1547734

基本的想法是将作为一个整体的TextFiles 读取,然后将其加载到一个json 阅读器中,该阅读器将对其进行解析并绘制结果。

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

【讨论】:

  • 所以如果我的文件大到无法放入 RAM 中,这不是一个选择吗?
  • 没有。我能想到的唯一方法就是手动完成。如果您有一个这样的文件,请创建一个程序,一次读取一行,直到它重建记录,然后将其作为单行写入输出(即预处理)。
  • 是的,我认为这是在提问之前的唯一方法。谢谢!
猜你喜欢
  • 2016-01-15
  • 2017-01-31
  • 1970-01-01
  • 2017-07-23
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多