Hudi集成Hive时的异常解决方法 java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat

这篇具有很好参考价值的文章主要介绍了Hudi集成Hive时的异常解决方法 java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hudi 0.10.0 集成 Hive 时的异常及解决方法: java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat

异常信息

使用 Hive CLI 连接 Hive 3.1.2 并查询对应的 Hudi 映射的 Hive 表,发现如下异常:

hive (flk_hive)> select * from status_h2h limit 10;
22/10/24 15:22:07 INFO conf.HiveConf: Using the default value passed in for log id: 0f8a42a6-8195-413a-90dc-a31f7f96f1f0
22/10/24 15:22:07 INFO session.SessionState: Updating thread name to 0f8a42a6-8195-413a-90dc-a31f7f96f1f0 main
22/10/24 15:22:07 INFO ql.Driver: Compiling command(queryId=hadoop_20221024152207_133658b2-28c5-4a69-9b2f-b4b2ce99994a): select * from status_h2h limit 10
22/10/24 15:22:07 INFO ql.Driver: Concurrency mode is disabled, not creating a lock manager
22/10/24 15:22:07 INFO parse.SemanticAnalyzer: Starting Semantic Analysis
22/10/24 15:22:07 INFO parse.SemanticAnalyzer: Completed phase 1 of Semantic Analysis
22/10/24 15:22:07 INFO parse.SemanticAnalyzer: Get metadata for source tables
FAILED: RuntimeException java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat
22/10/24 15:22:08 ERROR ql.Driver: FAILED: RuntimeException java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat
        at org.apache.hadoop.hive.ql.metadata.Table.getInputFormatClass(Table.java:324)
        at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:2191)
        at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:2075)
        at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genResolvedParseTree(SemanticAnalyzer.java:12033)
        at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:12129)
        at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:11676)
        at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:285)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:659)
        at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1826)
        at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1773)
        at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1768)
        at org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:126)
        at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:214)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:188)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:402)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
        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:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:313)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:227)
Caused by: java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.hadoop.hive.ql.metadata.Table.getInputFormatClass(Table.java:321)
        ... 24 more

错误原因推断

根据报错信息 Caused by: java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat 推断时缺少相应的 Jar 包所导致的异常。

翻看 Hudi 0.10.0 集成 Hive 的文档,文档链接,可以看到需要将 hudi-hadoop-mr-bundle 的相应 Jar 包放至 $HIVE_HOME/auxlib 中。如果没有相应 auxlib 路径则需要新建 (注意权限问题)。

注意如果需要使用 Hudi 集成 Hive312 则需要重新编译 Hudi 包,并在编译时使用 -Pflink-bundle-shade-hive3 参数。

解决方法

  1. 修改 Hudi 的顶级 pom.xml 文件中的 Hive 版本为对应版本
    <hive.groupid>org.apache.hive</hive.groupid>
<!--    <hive.version>2.3.1</hive.version>-->
    <hive.version>3.1.2</hive.version>
    <hive.exec.classifier>core</hive.exec.classifier>
  1. 使用命令配合新参数重新编译 Hudi 项目
mvn clean install -^DskipTests -^Dmaven.test.skip=true -^DskipITs -^Dcheckstyle.skip=true -^Drat.skip=true -^Dhadoop.version=3.0.0-cdh6.3.2  -^Pflink-bundle-shade-hive3 -^Dscala-2.12 -^Pspark-shade-unbundle-avro
  1. 将新编编译出的 hudi-hadoop-mr-bundle-0.10.0.jar 移动至 $HIVE_HOME/auxlib
[root@p0-tklcdh-nn03 auxlib]# pwd
/opt/cloudera/parcels/CDH/lib/hive/auxlib
[root@p0-tklcdh-nn03 auxlib]# ls -l
total 16892
-rw-r--r-- 1 appadmin appadmin 17294810 Oct 24 16:41 hudi-hadoop-mr-bundle-0.10.0.jar

特别注意: 编译时的参数和 Hive 版本一定要指定正确,否则相应 Jar 包的大小不同,会出现各种奇奇怪怪的问题。

# 这是 Hive2 相关的 hudi-hadoop-mr-bundle-0.10.0.jar 大小
[hadoop@p0-tklfrna-tklrna-device02 auxlib]$ ls -l ../../../jars/hudi-hadoop-mr-bundle-0.10.0.jar
-rw-r--r-- 1 root root 17289727 Mar 28  2022 ../../../jars/hudi-hadoop-mr-bundle-0.10.0.jar

# 这是 Hive3 相关的 hudi-hadoop-mr-bundle-0.10.0.jar 大小
[root@p0-tklcdh-nn03 auxlib]# ls -l
total 16892
-rw-r--r-- 1 appadmin appadmin 17294810 Oct 24 16:41 hudi-hadoop-mr-bundle-0.10.0.jar
  1. 重启 hivemetastore 和 hiveserver2 使之载入新添加的 Jar 包。

异常解决

将相应的 Hudi 依赖放至 $HIVE_HOME/auxlib 下,重启 hivemetastore 和 hiveserver2 再次使用 Hive CLI 进行查询文章来源地址https://www.toymoban.com/news/detail-427229.html

22/10/24 17:12:39 INFO ql.Driver: Executing command(queryId=root_20221024171238_96b1962b-b9b4-44b2-a554-2c7055fdf253): select * from status_h2h limit 10
22/10/24 17:12:39 INFO ql.Driver: Completed executing command(queryId=root_20221024171238_96b1962b-b9b4-44b2-a554-2c7055fdf253); Time taken: 0.001 seconds
OK
22/10/24 17:12:39 INFO ql.Driver: OK
22/10/24 17:12:39 INFO ql.Driver: Concurrency mode is disabled, not creating a lock manager
22/10/24 17:12:39 INFO utils.HoodieInputFormatUtils: Reading hoodie metadata from path hdfs://10.132.62.2/hudi/flk_hudi/status_hudi
22/10/24 17:12:39 INFO table.HoodieTableMetaClient: Loading HoodieTableMetaClient from hdfs://10.132.62.2/hudi/flk_hudi/status_hudi
22/10/24 17:12:39 INFO table.HoodieTableConfig: Loading table properties from hdfs://10.132.62.2/hudi/flk_hudi/status_hudi/.hoodie/hoodie.properties
22/10/24 17:12:39 INFO table.HoodieTableMetaClient: Finished Loading Table of type COPY_ON_WRITE(version=1, baseFileFormat=PARQUET) from hdfs://10.132.62.2/hudi/flk_hudi/status_hudi
22/10/24 17:12:39 INFO utils.HoodieInputFormatUtils: Found a total of 1 groups
22/10/24 17:12:40 INFO timeline.HoodieActiveTimeline: Loaded instants upto : Option{val=[==>20221024171048577__commit__INFLIGHT]}
22/10/24 17:12:40 INFO view.FileSystemViewManager: Creating InMemory based view for basePath hdfs://10.132.62.2/hudi/flk_hudi/status_hudi
22/10/24 17:12:40 INFO view.AbstractTableFileSystemView: Took 4 ms to read  0 instants, 0 replaced file groups
22/10/24 17:12:40 INFO util.ClusteringUtils: Found 0 files in pending clustering operations
22/10/24 17:12:40 INFO view.AbstractTableFileSystemView: Building file system view for partition ()
22/10/24 17:12:40 INFO view.AbstractTableFileSystemView: addFilesToView: NumFiles=10297, NumFileGroups=16, FileGroupsCreationTime=449, StoreTimeTaken=2
22/10/24 17:12:40 INFO utils.HoodieInputFormatUtils: Total paths to process after hoodie filter 16
22/10/24 17:12:40 INFO view.AbstractTableFileSystemView: Took 1 ms to read  0 instants, 0 replaced file groups
22/10/24 17:12:40 INFO util.ClusteringUtils: Found 0 files in pending clustering operations
22/10/24 17:12:40 INFO Configuration.deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
22/10/24 17:12:41 INFO hadoop.InternalParquetRecordReader: RecordReader initialized will read a total of 16680 records.
22/10/24 17:12:41 INFO hadoop.InternalParquetRecordReader: at row 0. reading next block
22/10/24 17:12:41 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
22/10/24 17:12:41 INFO compress.CodecPool: Got brand-new decompressor [.gz]
22/10/24 17:12:41 INFO hadoop.InternalParquetRecordReader: block read in memory in 42 ms. row count = 16680
Done

到了这里,关于Hudi集成Hive时的异常解决方法 java.lang.ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Java.lang.ClassNotFoundException的方法

    解决Java.lang.ClassNotFoundException的方法 Java.lang.ClassNotFoundException是一个常见的Java异常,它表示在运行时无法找到特定的类。这通常是由于缺少所需的库或类文件引起的。要解决这个问题,可以通过以下几种方法来定位和解决缺少的类。 检查类路径 首先,确保所需的依赖项已正

    2024年02月07日
    浏览(30)
  • 解析java.lang.ClassNotFoundException异常

    在Java编程中,我们经常会遇到各种异常。其中,java.lang.ClassNotFoundException是一种常见的异常类型。这个异常表示在运行时无法找到所需的类。本篇博客将介绍该异常的背景和意义,并解释为什么需要了解和处理该异常。 java.lang.ClassNotFoundException异常是Java编程中的一个标准异常

    2024年02月10日
    浏览(49)
  • 已解决maven中出现java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody异常的正确解决方

    已解决maven中出现java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody异常的正确解决方法,亲测有效!!! java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody 是一个常见的异常,通常是由于

    2024年02月16日
    浏览(31)
  • 深入解析java.lang.ClassNotFoundException异常

    在Java开发中,我们经常会遇到各种异常。其中, java.lang.ClassNotFoundException 异常是一种常见的异常。本文将深入解析这个异常的定义、作用、产生原因以及常见场景。 1.1 介绍ClassNotFoundException异常的定义和作用 ClassNotFoundException 异常是Java编程语言中的一个标准异常类,它继承

    2024年02月11日
    浏览(31)
  • java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener的一个独特解决方法

    除了网上所说的各种类型的解决方案,还有一种解决方案。 1、在pom.xml中添加一句   2、重新配置tomcat,选择war 3、确保web的路径是对的 file--project structure 如果3处标红了 改为web文件夹的正确路径即可。 4、启动,应该就可以成功了。 原因: packaging标签目前有三种类型:pom、

    2023年04月08日
    浏览(31)
  • 已解决java.lang.NoClassDefFoundError异常的正确解决方法,亲测有效!!!已解决java.lang.NoClassDefFoundError异常的正确解决方法,亲测有效!!!

    已解决java.lang.NoClassDefFoundError异常的正确解决方法,亲测有效!!! java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError是Java虚拟机在运行时无法找到特定类的错误。 下滑查看解决方法 该错误通常发生在以下情况下: 编译时缺少依赖项:如果在开发过程中缺少所需的库或依赖项

    2024年02月14日
    浏览(37)
  • 已解决java.lang.ClassNotFoundException

    java.lang.ClassNotFoundException java.lang.ClassNotFoundException java.lang.ClassNotFoundException是一个Java异常,它表示在运行时找不到指定的类。 下滑查看解决方法 通常,这是由于类路径设置错误或缺失的依赖项引起的。要解决这个问题,可以尝试以下几个方法: 检查类路径:确保所需的类在

    2024年02月08日
    浏览(33)
  • 解决java.lang.NullPointerException异常的方法

    解决java.lang.NullPointerException异常的方法 java.lang.NullPointerException异常 ava.lang.NullPointerException(NPE)是Java中最常见的运行时异常之一,通常发生在应用程序试图在需要对象的地方使用null。要解决这个问题,你需要确保在引用对象之前,该对象已经被正确初始化。 下滑查看解决方

    2024年04月25日
    浏览(35)
  • 解决java.lang.IllegalArgumentException异常的正确解决方法

    java.lang.IllegalArgumentException 是 Java 编程语言中的一个运行时异常,通常表示向方法传递了一个不合法或不适当的参数。当程序在运行时遇到此类异常,它会立即中断当前的执行流程,并抛出异常信息。理解这个异常的原因并学会如何正确解决,对于编写健壮的 Java 程序至关重

    2024年04月25日
    浏览(50)
  • java.lang.NoClassDefFoundError异常的正确解决方法

    java.lang.NoClassDefFoundError 是 Java 运行时环境中的一个错误,表明 JVM 在运行时尝试加载一个类的定义,但未能找到。这通常发生在编译时该类是可用的,但在运行时 JVM 的类路径(classpath)上却找不到这个类。此错误不同于 ClassNotFoundException,后者通常在加载类时抛出,而 NoCl

    2024年04月25日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包