AWS数据管道与步骤功能

时间:2019-03-08 10:50:24

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

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

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

  1. 我应该使用哪个调度和编排处理EMR作业?

  2. 更笼统地说,在哪种情况下,就ETL /数据处理而言,哪一种是比另一种更好的选择?

1 个答案:

答案 0 :(得分:3)

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

如果您要进行一系列转换,并且所有转换都在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 Services和AWS Lambda具有良好的集成,这意味着您可以通过无服务器api轻松地与任何东西集成。

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