3

我想在 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 来做到这一点吗?还是有其他方法来加速/分布映射/转换?

谢谢你的帮助。

最好的问候,托马斯

4

1 回答 1

0

考虑到没有 Spark 的场景,我建议使用 Jackson Streaming (Java) 流式传输 json(参见例如那里),将每个 Json 对象映射到 Scala 案例类并将它们发送到具有多个执行转换部分的路由的Akka 路由器在平行下。

于 2013-10-14T07:58:12.237 回答