【问题标题】:What is the correct way of installing a JDBC driver on EMR for Sqoop to use?在 EMR 上安装 JDBC 驱动程序以供 Sqoop 使用的正确方法是什么?
【发布时间】:2020-12-01 10:06:27
【问题描述】:

我在 AWS EMR 5.21.1 上运行 Sqoop 1.4.7 并尝试从数据库导入数据。我已经成功地手动执行此操作,我通过 EMR 控制台创建了一个安装了 Sqoop 的 EMR 实例。

这是我为了在 EMR 上运行 sqoop 而执行的初步步骤

  1. 下载 JDBC 驱动程序
  2. 将 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 目录不存在。

这里有一些可行的解决方案,但它们感觉像是变通方法

  1. 在我的引导脚本中创建 /usr/lib/sqoop/lib 目录,然后将 jar 放入其中
  2. 将 jar 作为 EMR 步骤添加到此目录。 (事实证明这是正确的方法,请看下面接受的答案)

在 EMR 上安装此 JDBC 驱动程序的正确方法是什么?

【问题讨论】:

  • 我测试了解决方案#1,它成功了。仍然不确定这是否是“最佳实践”
  • 我们还运行脚本作为 EMR 步骤来下载 Sqoop、Spark 等的 jar。
  • m 也有同样的问题,能否请您发送通过引导添加的添加步骤,如果或正常不应运行? @vi_ral
  • 抱歉,不知道这是什么意思

标签: amazon-web-services jdbc sqoop amazon-emr


【解决方案1】:

第二个选项是正确的方法。 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/"

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2013-11-15
    • 2017-01-06
    • 2019-07-15
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 2012-12-01
    • 2019-06-27
    相关资源
    最近更新 更多