【问题标题】:AWS Data Pipeline vs Step FunctionsAWS Data Pipeline 与 Step Functions
【发布时间】:2019-03-08 19:37:47
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: amazon-web-services aws-step-functions aws-data-pipeline


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 谢谢。由于我们需要执行验证等并处理作业之间的依赖关系,我认为 EMR 步骤可能不是一个干净的解决方案。关键要点:1) 对于纯数据管道问题,ADP 更好 2) 对于我们想要进行复杂的任意处理的情况,ASF 更好。