是否可以使用spark来处理具有复杂依赖关系的复杂实体?

Is it possible to use spark to process complex entities with complex dependencies?

考虑一个场景(对象和依赖是Scala类):

有一组依赖项本身需要大量数据进行实例化(数据来自数据库)。 有一组具有复杂嵌套层次结构的对象,用于存储对这些依赖项的引用。

当前的工作流程包括:

  1. 从数据库加载依赖数据并实例化它们 (以一种具有相互依赖性的非常复杂的方式)。
  2. 正在加载对象 来自数据库的数据和使用先前实例化对象 加载的依赖项。
  3. 运行 对对象列表的操作,例如:

    a. Search with a complex predicate
    b. Transform
    c. Filter
    d. Save to the database
    e. Reload from the database
    

我们正在考虑 运行在多台机器上执行这些操作。选项之一是使用 Spark,但不清楚如何正确支持数据序列化和 distribute/update 依赖项。

即使我们能够将对象中的逻辑与数据分离(使对象易于序列化),我们想要 运行 对象上的函数仍将依赖于上述复杂的依赖关系。

此外,至少目前,我们没有计划使用任何需要在机器之间混洗数据的操作,我们所需要的基本上就是分片。

Spark 看起来是否适合这种情况?

我不太明白你所说的 "complex interdependencies" 是什么意思,但似乎如果你只需要分片,你就不会真正从 spark 中得到太多 - 只要 运行 多,无论你有什么使用队列来同步工作并将其需要处理的分片分发给每个副本。

我们做了类似的事情,将 pySpark jot 转换为 Kubernetes 设置,其中队列包含 id 列表,然后我们有多个 pods(我们通过 kubectl 控制规模)从该队列读取并得到更好的性能和更简单的解决方案 - 请参阅 https://kubernetes.io/docs/tasks/job/coarse-parallel-processing-work-queue/