使用sqoop 为RDBMS数据导入到HDFS上命令运行出错
错误: 读取/root/software/sqoop/lib/commons-lang3-3.4.jar时出错; error in opening zip file
错误: 读取/root/software/sqoop/lib/commons-lang3-3.4.jar时出错; cannot read zip file
注: /tmp/sqoop-root/compile/7d875e9aa66374bc31bec957613f0545/staff.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
21/01/03 15:17:01 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/7d875e9aa66374bc31bec957613f0545/staff.jar
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
at org.apache.sqoop.orm.CompilationManager.includeFileInJar(CompilationManager.java:331)
at org.apache.sqoop.orm.CompilationManager.addClassFilesFromDir(CompilationManager.java:309)
at org.apache.sqoop.orm.CompilationManager.jar(CompilationManager.java:378)
at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:108)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:501)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:628)
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.commons.lang3.StringUtils
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 12 more
原因:
Sqoop1.4.7默认只加载了commons-lang3-3.4.jar的jar包,里面的StringUtils类的package为:org/apache/commons/lang3/StringUtils,所以直接使用sqoop命令时报上述错误。
解决:
将旧版的jar包下载并导入到sqoop目录下的lib目录下即可
下载地址:
http://mirrors.tuna.tsinghua.edu.cn/apache//commons/lang/binaries/commons-lang-2.6-bin.zip