【问题标题】:Apache Spark RDD WorkflowApache Spark RDD 工作流程
【发布时间】:2016-04-16 14:46:30
【问题描述】:
我正在尝试在我们目前保存在时间序列数据库中的庞大数据集上使用 Spark 的 MLib。假设我们的时间序列数据库中有数据 A、B、C、D 和 E,我想先加载 A、B、C 并进行一些转换,然后将转换后的数据传递到 Spark MLib。
在这方面我有几个问题。有没有我应该考虑的标准工作流程?我的意思是数据的加载和转换对我来说似乎仍然是一个问题。这不是 Spark 特有的。我想知道使用 Apache Camel 等框架进行 ETL 并将结果提供给 Spark 是否有任何好处?
有什么建议吗?
【问题讨论】:
标签:
apache-spark
apache-camel
【解决方案1】:
加载和转换数据当然不是 spark 特有的,但它却非常擅长。您可以免费获得许多不错的功能,例如容错、惰性、快速批处理以及适用于所有内容的一致 DSL。
需要专门分阶段缓存吗?
想要在不维护 20 个不同的 ETL 脚本的情况下合并来自 SQL、S3、Kafka 和 Twitter 的数据?
Spark 可以做到这一切。
也有一些限制; Spark 需要能够从数据集及其指定的转换构建沿袭图,并且任何非幂等的操作(如 HTTP 请求)都会打破这一点。
非常笼统的总结,不知道更多:
如果您“拥有”所有数据源(即它们驻留在数据库或其他东西中),请将所有 ETL 和 mllib 程序结合起来。这样您就不必在大量数据上玩烫手山芋了。
如果您需要依赖某些外部数据源,请编写一些代码来获取它并使其拥有。