【发布时间】:2016-07-18 10:09:19
【问题描述】:
我有一个有点抽象的问题。我最近一直在使用 Apache Spark(还有 Streaming 和 SQL)和 Scala。我的大多数 Spark 作业基本上将 RDD/Dataframes 从一个类移动到另一个类,每个类对输入执行一些转换。
我最近也在阅读有关领域驱动设计的文章,这让我开始思考如何使用 DDD 对 Spark 程序进行建模。我不得不说,我发现使用 DDD 概念对 Spark 代码建模比对非 Spark 代码建模要困难得多(可能是因为它主要执行转换或 IO)。我可能会考虑如何创建一种无处不在的语言,但不会考虑如何在 Spark 代码本身中实际应用它。
我尝试用谷歌搜索如何使用 Spark 和 DDD,但找不到任何关于它的信息,所以我想知道:
- 我只是错过了一些关于如何将 DDD 概念应用于 Spark 代码的内容吗?
- 也许 Spark 作业如此专注于 ETL,以至于它们实际上不需要使用 DDD?如果不是这样,有人可以解释她/他如何将 DDD 概念与 Spark 代码一起使用吗?也许一些例子可能有用
我希望这是一个合理的问题 - 如果不是,我很抱歉
提前致谢
【问题讨论】:
-
Spark 适用于短期运行、相当简单但需要内存/计算的作业。 DDD 是用于对相当复杂的系统进行建模的东西 - 所以典型的设置是让 spark 项目在某处处理您的数据并以聚合形式将其持久化,而 DDD 项目实际使用处理过的数据。
-
这些简单的计算有时会变成带有大量代码的相当大的系统 - 你不认为当它们变成带有大量代码行和类的相当复杂的系统时,它们还需要重新建模?
标签: scala apache-spark apache-spark-sql spark-streaming spark-dataframe