有没有什么好方法可以将Talend作业与Amazon EMR集成?

时间:2017-04-24 06:45:04

标签: hadoop talend emr

目前我正在尝试将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集成?

1 个答案:

答案 0 :(得分:0)

最后,我使用AWS提供的script-runner.jar解决了这个问题。

Run a Script in a Cluster

我创建了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)。