有没有什么好的方法可以将 Talend 作业与 Amazon EMR 集成?
Is there any good way to integrate Talend job with Amazon EMR?
目前我正在尝试将 AWS EMR 与 Talend 集成。
我的目的是 运行 AWS EMR 上的 Talend 作业(由 Talend studio 导出)。我已经尝试过 "add step as custom jar",但似乎 Talend 作业 运行 还使用导出的 lib
文件夹和脚本。
我想 运行 使用 fat jar,但是这个问题表明我们不能这样做,因为缺少将 JAR 文件导出为 fat jar 的功能。 -->
有没有什么好的方法可以将 Talend 作业与 Amazon EMR 集成?
最后,我使用AWS提供的script-runner.jar
解决了这个问题。
我创建了 Lambda 脚本来启动 EMR 集群。我附加 HadoopJarStep
。
这允许我们使用一些 shell 脚本来下载和启动 Talend 作业 shell 脚本。
请看Boto3 Docs - EMR了解意思
'HadoopJarStep': {
'Jar': 's3://ap-northeast-1.elasticmapreduce/libs/script-runner/script-runner.jar',
'Args': [
's3://your/bucket/name.../talend_run.sh'
]
}
talend_run.sh
如下(可惜shell脚本)
#!/bin/bash
echo "Start, Talend!!"
# here is exported talend job ( contains bootstrap shellscript )
ZIP_NAME=talend-batch-zipped.zip
DIR_NAME=talend-batch-zipped/kicker
SHELL_NAME=kicker_run.sh
# update package because EMR servers don't have unzip command
sudo yum update -y
sudo yum install -y wget unzip
rm -rf ${ZIP_NAME}
wget https://your.using.s3.host.name/${ZIP_NAME} -P `pwd`/
# unzip the zipped job file into the EMR server
unzip ${ZIP_NAME}
cd ${DIR_NAME}
# pass parameters to talend job
bash ./${SHELL_NAME} "$@"
启动AWS Lambda 函数后,创建了EMR 集群。之后,由 EMR 服务器处理的步骤(shell 以上)。
目前我正在尝试将 AWS EMR 与 Talend 集成。
我的目的是 运行 AWS EMR 上的 Talend 作业(由 Talend studio 导出)。我已经尝试过 "add step as custom jar",但似乎 Talend 作业 运行 还使用导出的 lib
文件夹和脚本。
我想 运行 使用 fat jar,但是这个问题表明我们不能这样做,因为缺少将 JAR 文件导出为 fat jar 的功能。 -->
有没有什么好的方法可以将 Talend 作业与 Amazon EMR 集成?
最后,我使用AWS提供的script-runner.jar
解决了这个问题。
我创建了 Lambda 脚本来启动 EMR 集群。我附加 HadoopJarStep
。
这允许我们使用一些 shell 脚本来下载和启动 Talend 作业 shell 脚本。
请看Boto3 Docs - EMR了解意思
'HadoopJarStep': { 'Jar': 's3://ap-northeast-1.elasticmapreduce/libs/script-runner/script-runner.jar', 'Args': [ 's3://your/bucket/name.../talend_run.sh' ] }
talend_run.sh
如下(可惜shell脚本)
#!/bin/bash
echo "Start, Talend!!"
# here is exported talend job ( contains bootstrap shellscript )
ZIP_NAME=talend-batch-zipped.zip
DIR_NAME=talend-batch-zipped/kicker
SHELL_NAME=kicker_run.sh
# update package because EMR servers don't have unzip command
sudo yum update -y
sudo yum install -y wget unzip
rm -rf ${ZIP_NAME}
wget https://your.using.s3.host.name/${ZIP_NAME} -P `pwd`/
# unzip the zipped job file into the EMR server
unzip ${ZIP_NAME}
cd ${DIR_NAME}
# pass parameters to talend job
bash ./${SHELL_NAME} "$@"
启动AWS Lambda 函数后,创建了EMR 集群。之后,由 EMR 服务器处理的步骤(shell 以上)。