我有一个抽象的问题。最近,我经常在Scala中使用ApacheSpark(还有流媒体和SQL)。我的大多数Spark工作基本上将RDD/数据帧从一个类移动到另一个类,每个类对输入执行一些转换。
我最近也读到了关于领域驱动设计的文章,这让我思考如何使用DDD为我的Spark程序建模。我不得不说,我发现使用DDD概念建模Spark代码比非Spark代码要困难得多(可能是因为它主要执行转换或IO)。我可能会考虑如何创建一种无处不在的语言,但不会考虑如何在Spark代码中实际应用它。
我试着在谷歌上搜索如何使用Spark和DDD,但找不到任何关于它的信息,所以我想知道:
- 我是不是错过了一些关于如何将DDD概念应用于Spark代码的内容
- 也许Spark工作如此专注于ETL,以至于实际上不需要使用DDD?如果不是这样的话,有人能解释一下她/他是如何在Spark代码中使用DDD概念的吗?也许一些例子会有用
我希望这是一个合理的问题-如果不是,我向道歉
提前感谢
Spark的DSL和DDD是截然不同的抽象。你所面临的挑战源于这两个抽象概念之间的"距离"。这是复杂系统设计中的一个常见问题,它表明缺少一个将两者连接起来的抽象。在您的情况下,这将是一个非常适合DDD的抽象,然后通过DSL"生成"Spark转换。Scala非常适合构建这样的抽象。有关可能的提示,请参阅:https://databricks.com/session/the-smart-data-warehouse-goal-based-data-production