AWS Data Pipeline 与 Step Functions

AWS Data Pipeline vs Step Functions

我正在解决一个问题,我们打算使用 EMR (SparkSQL) 对数据执行多个转换。

在阅读了 AWS Data Pipelines 和 AWS Step Functions 的文档后,我对每个尝试解决的用例感到有些困惑。我环顾四周,但没有找到两者之间的权威比较。有多个资源展示了我如何使用它们在 EMR 集群上安排和触发 Spark 作业。

  1. 我应该使用哪一个来安排和编排我处理的 EMR 作业?

  2. 更一般地说,就 ETL/data 处理而言,在什么情况下一个是比另一个更好的选择?

是的,有很多方法可以实现同一件事,区别在于细节和用例。我什至要提供另一种选择:)

如果您正在执行一系列转换并且所有这些都在 EMR 集群上,那么您可能只需要创建包含多个步骤的集群,或者提交包含多个步骤的 API 作业。步骤将在您的集群上按顺序执行。

如果您有不同的数据源,或者您想要处理更复杂的场景,那么 AWS Data Pipeline 和 AWS Step Functions 都可以。 AWS Step Functions 是实现工作流的通用方法,而 Data Pipelines 是处理数据的专用工作流。

这意味着 Data Pipeline 在处理数据源和输出方面将得到更好的集成,并且可以直接与 S3、EMR、DynamoDB、Redshift 或 RDS 等工具一起使用。因此,对于纯数据管道问题,AWS Data Pipeline 可能是更好的选择。

话虽如此,AWS Data Pipeline 并不是很灵活。如果您需要的数据源不受支持,或者如果您想执行一些未集成的 activity,那么您需要使用 shell 脚本进行破解。

另一方面,AWS Step Functions 不是专门的,并且与某些 AWS 服务和 AWS Lambda 有很好的集成,这意味着您可以通过无服务器 API 轻松地与任何东西集成。

所以这实际上取决于您需要实现的目标以及您的工作量类型。