我想在Scala中计算非常大的JSON文件(每个大约400 MB)。
我的用例是批处理。我可以在同一时刻收到几个非常大的文件(最多20 GB,然后剪切以进行处理),我真的希望将它们作为队列快速处理(但这不是本文的主题!)。所以这真的是关于分布式架构和性能问题。
我的JSON文件格式是一个对象数组,每个JSON对象至少包含20个字段。我的流程由两个主要步骤组成。第一个是将JSON对象映射到Scala对象。第二步是我在Scala对象数据上进行的一些转换。
为了避免将所有文件加载到内存中,我想要一个解析库,我可以在其中进行增量解析。有这么多的库(Play-JSON,Jerkson,Lift-JSON,内置的scala.util.parsing.json.JSON,Gson),我无法弄清楚要采用哪一个,并要求最小化依赖性。
另外,我正在寻找一种方法来并行处理JSON文件的映射和字段上的转换(在几个节点之间)。
感谢您的帮助。
最好的问候,托马斯
答案 0 :(得分:0)
考虑到没有Spark的场景,我建议使用Jackson Streaming(Java)来流式传输json(参见例如there),将每个Json对象映射到Scala案例类并将它们发送到{{3有几个并行执行转换部分的路由。