Spark 矢量 UDF 和分布式计算的 Apache Ignite 模拟

Apache Ignite analogue of Spark vector UDF and distributed compute in general

我使用 Spark 已经有一段时间了,并且在 Python 中取得了成功,但是我们有一个用 C# 编写的产品,它将极大地受益于分布式和并行执行。我做了一些研究并尝试了新的 C# API for Spark,但目前有点限制。

关于 Ignite,从表面上看它似乎是一个不错的选择。它获得了良好的 .NET 支持,它具有集群能力和跨网格分布计算的能力。

但是,我想知道在我们的用例中它是否真的可以用来替代 Spark - 我们需要的是一种分布式方式来执行数据帧类型的操作。特别是我们 Python 中的很多代码都是使用 Pandas UDF 实现的,我们让 Spark 负责数据传输和结果合并。

如果我想使用 Ignite,我们的数据实际上更像是 table(通常来自 CSV)而不是基于 key/value,是否有一种有效的方式来表示整个数据网格并将计算发送到以与 Spark 相同的方式在数据的任意子集上执行的集群,特别是在计算结果只是变成数据帧中的 1..n 列而无需收集所有数据的意义上结果返回主程序?

您可以使用其 SQL 实现将结构化数据 (CSV) 加载到 Ignite:

https://apacheignite-sql.readme.io/docs/overview

它将提供对该数据和索引支持进行分布式 SQL 查询的可能性。 Spark 还提供了使用 SQL 处理结构化数据的可能性,但没有索引。索引将帮助您显着提高 SQL 操作的性能。

如果您已经使用 Spark 数据框解决了一些问题,那么您也可以保存相同的逻辑,但改用 Ignite 与 Spark 的集成:

https://apacheignite-fs.readme.io/docs/ignite-data-frame

在这种情况下,您可以将所有数据存储在 Ignite SQL 表中,并使用 Spark 执行 SQL 请求和其他操作。

您可以在此处查看如何使用 Spark DF 将 CSV 数据加载到 Ignite 以及如何配置它的示例:

https://www.gridgain.com/resources/blog/how-debug-data-loading-spark-ignite