返回 导航

大数据

hangge.com

Sqoop - 解决连接MySQL时报NoClassDefFoundError: org/apache/commons/lang/StringUtils错误

作者:hangge | 2024-04-11 08:35

1,问题描述

最近使用 Sqoop 准备将Mysql数据导入 HDFS 中,当任务执行时报如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
        at org.apache.sqoop.tool.BaseSqoopTool.validateHiveOptions(BaseSqoopTool.java:1583)
        at org.apache.sqoop.tool.ImportTool.validateOptions(ImportTool.java:1178)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:137)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82)
        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.lang.StringUtils
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

2,问题原因

    根据错误提示可以看出,这是因为没有找到类 org.apache.commons.lang.StringUtils,也就是说 Sqoop 中没有这个类或者包含这个类的 jar 包。

3,解决办法

(1)查看 Sqooplib 目录,是包含 commons-lang3 jar 包。而 Sqoop 版本大部分是支持 2 的,我们将 commons-lang3 jar 包删除。

(2)然后到 Maven 官方仓库(点击访问)下载 commons-lang-2.6.jar

(3)然后将 commons-lang-2.6.jar 上传到 Sqooplib 目录中即可。
评论

全部评论(0)

回到顶部