Scala中的JSON库和计算的分布

时间:2013-10-13 22:16:58

标签: json scala distributed apache-spark

我想在Scala中计算非常大的JSON文件(每个大约400 MB)。

我的用例是批处理。我可以在同一时刻收到几个非常大的文件(最多20 GB,然后剪切以进行处理),我真的希望将它们作为队列快速处理(但这不是本文的主题!)。所以这真的是关于分布式架构和性能问题。

我的JSON文件格式是一个对象数组,每个JSON对象至少包含20个字段。我的流程由两个主要步骤组成。第一个是将JSON对象映射到Scala对象。第二步是我在Scala对象数据上进行的一些转换。

为了避免将所有文件加载到内存中,我想要一个解析库,我可以在其中进行增量解析。有这么多的库(Play-JSON,Jerkson,Lift-JSON,内置的scala.util.parsing.json.JSON,Gson),我无法弄清楚要采用哪一个,并要求最小化依赖性。

  • 您对我可以用于高性能解析的库有什么想法吗?

另外,我正在寻找一种方法来并行处理JSON文件的映射和字段上的转换(在几个节点之间)。

  • 你认为我可以用Apache Spark来做吗?或者是否有其他方法来加速/分配映射/转换?

感谢您的帮助。

最好的问候,托马斯

1 个答案:

答案 0 :(得分:0)

考虑到没有Spark的场景,我建议使用Jackson Streaming(Java)来流式传输json(参见例如there),将每个Json对象映射到Scala案例类并将它们发送到{{3有几个并行执行转换部分的路由。