2024-11-22《Sqoop使用mysql上传表到Hive报错》
Sqoop使用mysql上传表到Hive报错
前几天建民老大给我们进行了第二次的Hive测试,很遗憾,题目很简单,但是我一下午一项都没实现。
而导致我最终也没实现的原因,就是sqoop
的一些配置的问题。
因为建民老大说要在mysql里清洗数据,然后上传到Hive里,我请洗完之后就开始按照模板语句上传到Hive,但是一直报错,看教程说要把Hive的lib
目录下的Hive开头的包全都复制到sqoop的lib
目录下,但是依然报错。报错的语句如下:
ERROR tool.ImportTool: Import failed: java.io.IOException: Exception thrown in Hive | |
at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:358) | |
at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:241) | |
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:537) | |
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.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:483) | |
at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:331) | |
... 9 more | |
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/LoggerContextFactory | |
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:657) | |
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641) | |
... 14 more | |
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.spi.LoggerContextFactory | |
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) | |
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | |
at java.security.AccessController.doPrivileged(Native Method) | |
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) | |
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) | |
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) | |
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) | |
... 16 more |
这种情况的原因就是我们没有将Hive的lib目录下的log4j
相关jar包复制到sqoop的lib目录下,我建议是直接将Hive目录下的lib目录的所有包全复制过去,以免再出现其他错误。
分类:
软件需求与分析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)