在 AWS Data Pipeline 中将 EmrActivity 转换为 HadoopActivity

Translating EmrActivity to HadoopActivity in AWS Data Pipeline

想象一个仅包含以下内容的 AWS Data Pipeline 设置:

因此,例如,MyEmrActivity1 运行一个 spark 作业来计算给定年份的缺勤总数,因此该作业的 EmrActivity 的示例参数可能是:

myEmrActivity1: command-runner.jar,spark-submit,--master,yarn-cluster,--deploy-mode,cluster,PYTHON=python36,s3://amznhadoopactivity/school-attendance-python36/calculate_attendance_for_year.py,2017

其中 2017 表示提供给 Python 脚本的年份。

但是,HadoopActivity 的结构与 EmrActivity 的结构略有不同。 HadoopActivity 采用我用 s3://dynamodb-emr-<region>/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar 填写的 Jar URI,并插入我的区域 - 让我们称之为 myHadoopActivity1。但是,我不明白如何像我对参数所做的那样 link 向 activity 迈出一步 - 我将如何使用 HadoopActivity 对象重新创建我在数据管道中使用 EmrActivity 设置的行为反而?我应该使用不同的 .jar 文件吗?

事实证明这很容易实现,尽管不是很明显。首先,我 应该 使用不同的 .jar URI: /var/lib/aws/emr/step-runner/hadoop-jars/command-runner.jar。更改后,接下来的步骤非常简单。如果你是 运行:

command-runner.jar,spark-submit,--master,yarn-cluster

作为 EMR activity,只需添加一个 HadoopActivity,放入上面提到的 .jar,然后添加额外的参数来复制 EmrActivity "steps" 的行为:

Argument: command-runner.jar
Argument: spark-submit
Argument: --master
Argument: yarn-cluster

等等等等。所以,不是那么困难,但也不是不明显。希望这对以后的人有帮助。