【发布时间】:2020-12-01 10:06:27
【问题描述】:
我在 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 目录不存在。
这里有一些可行的解决方案,但它们感觉像是变通方法
- 在我的引导脚本中创建 /usr/lib/sqoop/lib 目录,然后将 jar 放入其中
- 将 jar 作为 EMR 步骤添加到此目录。 (事实证明这是正确的方法,请看下面接受的答案)
在 EMR 上安装此 JDBC 驱动程序的正确方法是什么?
【问题讨论】:
-
我测试了解决方案#1,它成功了。仍然不确定这是否是“最佳实践”
-
我们还运行脚本作为 EMR 步骤来下载 Sqoop、Spark 等的 jar。
-
m 也有同样的问题,能否请您发送通过引导添加的添加步骤,如果或正常不应运行? @vi_ral
-
抱歉,不知道这是什么意思
标签: amazon-web-services jdbc sqoop amazon-emr