Sqoop Import 命令抛出错误,但它正在从终端工作
Posted
技术标签:
【中文标题】Sqoop Import 命令抛出错误,但它正在从终端工作【英文标题】:Sqoop Import command throwing error but it is working from terminal 【发布时间】:2021-11-26 09:25:46 【问题描述】:下面的命令在终端上运行良好,但是当我从 Oozie 执行它时,它会抛出错误。
bash
sqoop import --connect jdbc:mysql://172.16.16.128:3306/employees -- username=hive --password=hive --driver com.mysql.jdbc.Driver --query 'select * from employee.testtable where 1=1 AND $CONDITIONS' --m 1 --target-dir '/user/hive/warehouse/test.db/testtable' --hive-import --hive-table test.testtable --hive-drop-import-delims --hive-overwrite --hs2-url jdbc:hive2://hivehostname:10000/default;
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: org.apache.hive.jdbc.HiveDriver java.lang.RuntimeException: Could not load db driver class: org.apache.hive.jdbc.HiveDriver
我已经把hive-jdbc驱动放在hadoop/lib、sqoop/lib和hive/lib目录下。有时它运行完美,但有时会抛出错误。
我无法识别系统的行为,因为已经放入了 hive jdbc jar。为什么会这样。请帮帮我。
【问题讨论】:
请您编辑您的问题以包含该命令吗? 您能否在 bash 中运行 sqoop 并使用与运行 Oozie 相同的用途?看起来像是权限问题。 @KoushikRoy 我已完全许可。仍然丢掉工作 嗯,好像少了点什么。您可以使用在 UNIX 中运行 Oozie 恶魔的用户登录吗?然后尝试 sqoop 命令。它无法找到 jdbc 驱动程序。还要查看配置文件中的 jdbc 条目是否存在冲突或多个条目,因此 oozie 用户会感到困惑。 @Kousik Roy driver not found 问题已经解决,现在它抛出“Caused by: java.lang.ClassNotFoundException: org.apache.hive.service.rpc.thrift.TCLIService$Iface”。我还发现一件事 sqoop 只适用于少数数据节点,但我在所有机器上都放了相同的 jars 【参考方案1】:我已经下载了下面的 jars 并将所有节点推送到 sqoop Lib 位置,然后问题得到解决。
hive-common-.jar hive-exec-.jar hive-service.jar
cd /usr/hdp/3.0.1.0-187/sqoop/lib
chmod 775 /usr/hdp/current/hive-client/lib/hive-common-*.jar
chmod 775 /usr/hdp/current/hive-client/lib/hive-exec-*.jar
chmod 775 /usr/hdp/current/hive-client/lib/hive-service.jar
【讨论】:
以上是关于Sqoop Import 命令抛出错误,但它正在从终端工作的主要内容,如果未能解决你的问题,请参考以下文章
Sqoop 导入映射器失败,但 sqoop 作业显示正在运行
Sqoop 导入错误 Error: java.io.IOException: SQLException in nextKeyValue