【发布时间】:2019-05-10 09:36:56
【问题描述】:
我已经使用 Apache Spark + Scala 超过 5 年了(学术和专业经验)。我一直发现 Spark/Scala 是构建任何类型的批处理或流式 ETL/ELT 应用程序的强大组合之一。
但最近,我的客户决定将 Java Spring Batch 用于我们的两个主要管道:
- 从 MongoDB 读取 --> 业务逻辑 --> 写入 JSON 文件(~ 2GB | 600k 行)
- 从 Cassandra 读取 --> 业务逻辑 --> 写入 JSON 文件(~ 4GB | 2M 行)
我对这个企业级决定感到非常困惑。我同意业内有比我更伟大的思想,但我无法理解采取这一举措的必要性。
我的问题是:
- 有人比较过 Apache Spark 和 Java Spring Batch 的性能吗?
- 与 Spark 相比,使用 Spring Batch 有哪些优势?
- 与 Apache Spark 相比,Spring Batch 是否“真正分布式”?我在offcial docs 中遇到了诸如 chunk()、partition 等方法,但我不相信它真正的分布式。毕竟 Spring Batch 在单个 JVM 实例上运行。不是吗???
我无法理解这些。所以,我想利用这个平台在 Spring Batch 和 Apache Spark 之间进行公开讨论。
【问题讨论】:
-
可能他们认为 Spark 的数量太少。
-
@thebluephantom:音量是唯一的决定因素吗?从技术角度看,还有哪些其他原因?
-
不确定,也许一些明亮的火花可以在这里照亮。有不同的方法可以实现相同的目标。刚读完这篇文章,我认为 Spark 没有真正的优势。
-
问题实在是太宽泛了。
-
尝试使用 jsoniter-scala 来编写 JSON 文件。如果没有很多浮点数要序列化,那么您可以在一个线程中获得每秒约 1-2GB 的速度。只需在此处查看不同数据类型和消息样本的基准测试结果:plokhotnyuk.github.io/jsoniter-scala
标签: spring spring-boot apache-spark spring-batch etl