小怪兽vs69 2024-02-19 15:52 采纳率: 100%
浏览 3
已结题

Sqoop执行报错,求解决!

Hadoop版本为:hadoop-3.3.6
Sqoop版本:sqoop-1.99.7

Sqoop执行MySql导入数据到HDFS时,报错,通过查看job日志信息如下:
yarn logs -applicationId application_1706631382315_0001

img

执行时没有找到java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils类,,我应该在哪里加commons-lang-2.6.jar包呢?
Sqoop的lib目录下确实原来是commons-lang-2.5.jar,但是我已经换成2.6了,并且我把我虚拟机里所有的commons-lang-2.5.jar全部都替换成2.6了,还是不行!求解决

原lib:

img

替换后:

img

  • 写回答

1条回答 默认 最新

  • 凯特梦阮_KTMR 2024-02-19 15:57
    关注

    根据你提供的信息,可以尝试以下解决方案:

    确认替换的jar包路径是否正确:确保你将 commons-lang-2.6.jar 替换到了 Sqoop lib 目录下,并且路径和文件名都是正确的。

    确认环境变量是否设置正确:如果你设置了 HADOOP_CLASSPATH 环境变量,请确保其中包含了 commons-lang-2.6.jar 的路径。你可以在终端中输入 echo $HADOOP_CLASSPATH 来查看环境变量的值。

    检查是否有其他版本的 commons-lang.jar:在你的系统中搜索是否存在其他版本的 commons-lang.jar 文件,因为这可能会导致类库冲突。如果找到其他版本的文件,请将其从 CLASSPATH 中删除或者重命名。

    检查 Sqoop 的配置文件是否正确:检查 Sqoop 配置文件中是否正确配置了 Classpath。你可以在 sqoop-env.sh 文件中添加以下代码:

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/path/to/commons-lang-2.6.jar
    其中 /path/to/commons-lang-2.6.jar 是你实际的 commons-lang-2.6.jar 文件路径。

    重新编译 Sqoop:如果以上方法均未能解决问题,你可以尝试重新编译 Sqoop。首先,在源代码目录下使用 Maven 执行 mvn clean package -DskipTests=true 命令进行编译打包。然后,将编译后的 Sqoop 目录下的 lib 目录中的所有 jar 文件拷贝到 Sqoop 安装目录下的 lib 目录中。

    希望以上方法可以帮助你解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月19日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答