Apache Spark和域驱动设计

Gid*_*eon 7 scala apache-spark spark-streaming apache-spark-sql spark-dataframe

我有点抽象的问题.我最近一直在和Scala一起使用Apache Spark(也是Streaming和SQL).我的大多数Spark作业基本上将RDD/Dataframe从一个类移动到另一个类,其中每个类对输入执行一些转换.

我最近也在阅读有关Domain Driven Design的内容,这让我想到了如何使用DDD来模拟我的Spark程序.我得说我发现使用DDD概念来模拟Spark代码要比非Spark代码更难(可能是因为它主要执行转换或IO).我可以考虑如何创建无处不在的语言,而不是如何在Spark代码本身中实际应用它.

我试过谷歌搜索如何使用Spark与DDD,但无法找到任何关于它,所以我想知道:

  • 我是否遗漏了有关如何在Spark代码上应用DDD概念的内容?
  • 也许Spark职业如此专注于ETL,他们实际上并不需要使用DDD?如果不是这样,有人可以解释她/他如何在Spark代码中使用DDD概念?也许一些例子可能有用

我希望这是一个合理的问题 - 如果没有,我道歉

提前致谢

Sim*_*Sim 0

Spark 的 DSL 和 DDD 是截然不同的抽象。您面临的挑战源于两个抽象之间的“距离”。这是复杂系统设计中的常见问题,它表明缺少连接两者的抽象。在您的例子中,这将是一个非常适合 DDD 的抽象,然后通过 DSL“生成”Spark 转换。Scala 非常适合构建这样的抽象。有关可能的提示,请参阅:https ://databricks.com/session/the-smart-data-warehouse-goal-based-data-product