Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/ShimLoader

解决sqoop导数据到hive中报错的问题:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/ShimLoader
		at org.apache.hadoop.hive.conf.HiveConf$ConfVars.<clinit>(HiveConf.java:370)
 		at org.apache.hadoop.hive.conf.HiveConf.<clinit>(HiveConf.java:108)
 		at java.lang.Class.forName0(Native Method)
 		at java.lang.Class.forName(Class.java:264)
 		at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java:44)
 		at org.apache.sqoop.hive.HiveImport.getHiveArgs(HiveImport.java:392)
		at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:379)
		at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:337)
 		at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:241)
	 	at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:530)
 		at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:621)
 		at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
 		at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
 		at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
 		at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
 		at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
 		at org.apache.sqoop.Sqoop.main(Sqoop.java:252)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.shims.ShimLoader
 at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
 ... 17 more

一样说是sqoop缺少主要的工具包去连接hive,是缺少shims这个jar包。

解决方案:

把hive的lib目录下shims所有的jar包,拷贝到sqoop的lib目录下。

cp /opt/soft/hive110/lib/hive-shims* /opt/soft/sqoop146/lib/

把所有的shims包导入进sqoop的lib目录下就好了,这样不会报错,能正常导数据到hive中了!

猜你喜欢

转载自blog.csdn.net/zp17834994071/article/details/108389874