Hue中Sqoop导数报错Could not load db driver class: com.mysql.jdbc.Driver

前言

在Hue上面测试一个很简单的Sqoop

import
--connect
jdbc:mysql://10.169.xx.xxx/test
--username
root
--password
root
--as-textfile
--columns
id,name,english,chinese,math
--table
exam
--target-dir
hdfs://master02:8020/tmp/test
--check-column
id
--incremental
append
-m
1

这个代码是在本地测试通过的,我本认为在Hue上可以很轻松的通过,没想到直接报错:

java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver

一看这个bug,刚开始觉得很简单,只要Sqoop获取到jdbc驱动就可以了,可是这个jdbc驱动应该往哪里放啊?还有为什么本地测试竟然可以,而Hue就不行呢?郁闷ing。。。

究竟往哪里放JDBC驱动包呢

  1. 往每个节点的/CDH/lib/sqoop/lib下面都放
    在这里插入图片描述
  2. 往每个节点/var/lib/sqoop下面都放
    在这里插入图片描述
  3. 往HDFS的/user/oozie/share/lib/lib_timstamp/sqoop目录下放
    在这里插入图片描述

不对啊,放在/user/oozie/share/lib/lib_timstamp/sqoop目录下后得重启oozie服务啊
在这里插入图片描述
终于成功了…

后记

其实就两步:

1. 将mysql-connector-java.jar上传到hdfs:/user/oozie/share/lib/lib_timstamp/sqoop
2, 重启oozie服务。

还有,在hue的页面上无论出现什么错,总是报如下错误迷惑人:

>>> Invoking Sqoop command line now >>>

19:51:10.724 [main] WARN  org.apache.sqoop.tool.SqoopTool - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.

<<< Invocation of Sqoop command completed <<<

No child hadoop job is executed.
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.oozie.action.hadoop.LauncherAM.runActionMain(LauncherAM.java:410)
	at org.apache.oozie.action.hadoop.LauncherAM.access$300(LauncherAM.java:55)
	at org.apache.oozie.action.hadoop.LauncherAM$2.run(LauncherAM.java:223)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
	at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:217)
	at org.apache.oozie.action.hadoop.LauncherAM$1.run(LauncherAM.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
	at org.apache.oozie.action.hadoop.LauncherAM.main(LauncherAM.java:141)
Caused by: java.lang.SecurityException: Intercepted System.exit(1)
	at org.apache.oozie.action.hadoop.security.LauncherSecurityManager.checkExit(LauncherSecurityManager.java:57)
	at java.lang.Runtime.exit(Runtime.java:107)
	at java.lang.System.exit(System.java:971)
	at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
	at org.apache.oozie.action.hadoop.SqoopMain.runSqoopJob(SqoopMain.java:214)
	at org.apache.oozie.action.hadoop.SqoopMain.run(SqoopMain.java:199)
	at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:104)
	at org.apache.oozie.action.hadoop.SqoopMain.main(SqoopMain.java:51)
	... 16 more
Intercepting System.exit(1)
Failing Oozie Launcher, Main Class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]
Oozie Launcher, uploading action data to HDFS sequence file: hdfs://nameservice2/user/xuec7/oozie-oozi/0000000-191219193920246-oozie-oozi-W/sqoop-213e--sqoop/action-data.seq
19:51:10.778 [main] INFO  org.apache.hadoop.io.compress.CodecPool - Got brand-new compressor [.deflate]
Stopping AM
19:51:10.801 [main] INFO  org.apache.hadoop.yarn.client.api.impl.AMRMClientImpl - Waiting for application to be successfully unregistered.
Callback notification attempts left 0
Callback notification trying http://Utility02:11000/oozie/callback?id=0000000-191219193920246-oozie-oozi-W@sqoop-213e&status=FAILED
Callback notification to http://Utility02:11000/oozie/callback?id=0000000-191219193920246-oozie-oozi-W@sqoop-213e&status=FAILED succeeded
Callback notification succeeded

真的蛋疼啊,我在这个上面浪费了太多的时间

后知后觉

忽然在Hadoop实操的微信公众号里搜了一下Hue,才发现这个公众号早就回答了这个问题,以后多多学习

发布了237 篇原创文章 · 获赞 140 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/Android_xue/article/details/103634913