28

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

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

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

  2. 更一般地说,就 ETL/数据处理而言,在什么情况下一种比另一种更好?

4

1 回答 1

42

是的,有很多方法可以实现相同的目标,不同之处在于细节和您的用例。我什至还要提供另一种选择:)

如果您正在执行一系列转换并且所有这些转换都在 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 并不是很灵活。如果您需要的数据源不受支持,或者您想要执行一些未集成的活动,那么您需要使用 shell 脚本破解您的方式。

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

因此,这实际上取决于您需要实现的目标以及您拥有的工作量类型。

于 2019-03-08T11:37:47.950 回答