EMR + Hudi报ClassNotFoundException: RelDataTypeSystem错误的解决方法
Posted bluishglc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EMR + Hudi报ClassNotFoundException: RelDataTypeSystem错误的解决方法相关的知识,希望对你有一定的参考价值。
该问题一般发生在 EMR 6+ 版本上,也就是Hive3/Spark3上,诱因之一是在Hudi中设置了:DataSourceWriteOptions.HIVE_USE_JDBC_OPT_KEY -> “false”,具体错误为:
java.lang.ClassNotFoundException: org.apache.calcite.rel.type.RelDataTypeSystem
这是由于Hiv3/Spark3移除了对于calcite包的依赖引起的,所以不建议在EMR上配置DataSourceWriteOptions.HIVE_USE_JDBC_OPT_KEY -> "false"
,这与Glue中的配置是完全相反的,因为Glue的Spark版本是2.4.3,所以解决方法是移除DataSourceWriteOptions.HIVE_USE_JDBC_OPT_KEY -> "false"
配置,因为该项默认值是true,或显式配置:
DataSourceWriteOptions.HIVE_USE_JDBC_OPT_KEY -> "true"
关于此问题的更详细介绍,请参考作者另一篇文章《Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同》
关于作者:架构师,15年IT系统开发和架构经验,对大数据、企业级应用架构、SaaS、分布式存储和领域驱动设计有丰富的实践经验,热衷函数式编程。对Hadoop/Spark 生态系统有深入和广泛的了解,参与过Hadoop商业发行版的开发,曾带领团队建设过数个完备的企业数据平台,个人技术博客:https://laurence.blog.csdn.net/ 作者著有《大数据平台架构与原型实现:数据中台建设实战》一书,该书已在京东和当当上线。
以上是关于EMR + Hudi报ClassNotFoundException: RelDataTypeSystem错误的解决方法的主要内容,如果未能解决你的问题,请参考以下文章
Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同
Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
重磅!数据湖框架 Apache Hudi又双叕被国内顶级云服务提供商集成了!