目前我正在尝试将AWS EMR与Talend集成。
我的目的是在AWS EMR上运行Talend作业(由Talend studio导出)。我已经尝试过#34;将步骤添加为自定义jar",但似乎Talend作业也是通过使用导出的lib
文件夹和脚本来运行的。
我想用胖罐运行它,但是这个问题显示我们无法做到这一点,因为缺少将JAR文件导出为胖罐的功能。 - > how to export talend job as single fat jar
有没有什么好方法可以将Talend作业与Amazon EMR集成?
答案 0 :(得分:0)
最后,我使用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
就像下面一样(遗憾的是shellcript)
#!/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)。