问题描述
我正在AWS EMR 5.21.1上运行Sqoop 1.4.7,并试图从数据库导入数据。在通过EMR控制台安装Sqoop的EMR实例中,我已经能够成功手动完成此操作。
这是我为了在EMR上运行sqoop而执行的初步步骤
- 下载JDBC驱动程序
- 将JDBC驱动程序移至/ usr / lib / sqoop / lib目录
使用以下命令将我sshd到EMR集群后,我能够成功运行sqoop导入:
wget -O mssql-jdbc.jar https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/8.4.0.jre8/mssql-jdbc-8.4.0.jre8.jar
sudo mv mssql-jdbc.jar /usr/lib/sqoop/lib/
当我尝试从EMR引导脚本运行这些命令时,却收到错误消息:
usr/lib/sqoop/lib/ No such file or directory
进行调查后,我意识到这是因为“引导程序操作在安装诸如Hadoop或Spark的核心服务之前执行”,如here
因此,当我运行引导步骤时,/ usr / lib / sqoop / lib目录不存在。
在EMR上安装此JDBC驱动程序的正确方法是什么?
解决方法
第二个选项是正确的方法。 documentation解释了如何运行bash脚本作为EMR步骤。
您还可以使用jar command-runner.jar和要使用的参数
bash -c "wget -O mssql-jdbc.jar https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/8.4.0.jre8/mssql-jdbc-8.4.0.jre8.jar;sudo mv mssql-jdbc.jar /usr/lib/sqoop/lib/"