在使用flink sql ddl语句向hbase中写的时候报如下错误: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration at org.apache.flink.addons.hbase.HBaseUpsertTableSink.consumeDataStream(HBaseUpsertTableSink.java:87) at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:141) at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:50) 项目maven中已经引入过下面依赖 <artifactId>hbase-server</artifactId> <artifactId>hbase-common</artifactId> <artifactId>hadoop-common</artifactId> <artifactId>flink-hbase_2.11</artifactId> 而且我看jar中是有HBaseConfiguration这个类的,为什么放到服务器上执行就报错呢,在本地执行没问题 |
Hi
你服务器上是否配置了hadoop_classpath? 建议hbase在试用时 用 hadoop_classpath + flink-hbase jar,不然依赖问题会比较麻烦。 祝好 Leonard Xu > 在 2020年6月11日,14:24,酷酷的浑蛋 <[hidden email]> 写道: > > > > 在使用flink sql ddl语句向hbase中写的时候报如下错误: > java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration > at org.apache.flink.addons.hbase.HBaseUpsertTableSink.consumeDataStream(HBaseUpsertTableSink.java:87) > at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:141) > at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:50) > > > 项目maven中已经引入过下面依赖 > <artifactId>hbase-server</artifactId> > <artifactId>hbase-common</artifactId> > <artifactId>hadoop-common</artifactId> > <artifactId>flink-hbase_2.11</artifactId> > 而且我看jar中是有HBaseConfiguration这个类的,为什么放到服务器上执行就报错呢,在本地执行没问题 |
您是说将那几个jar都放到flink/lib下吗? 在2020年06月11日 14:39,Leonard Xu<[hidden email]> 写道: Hi 你服务器上是否配置了hadoop_classpath? 建议hbase在试用时 用 hadoop_classpath + flink-hbase jar,不然依赖问题会比较麻烦。 祝好 Leonard Xu 在 2020年6月11日,14:24,酷酷的浑蛋 <[hidden email]> 写道: 在使用flink sql ddl语句向hbase中写的时候报如下错误: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration at org.apache.flink.addons.hbase.HBaseUpsertTableSink.consumeDataStream(HBaseUpsertTableSink.java:87) at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:141) at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:50) 项目maven中已经引入过下面依赖 <artifactId>hbase-server</artifactId> <artifactId>hbase-common</artifactId> <artifactId>hadoop-common</artifactId> <artifactId>flink-hbase_2.11</artifactId> 而且我看jar中是有HBaseConfiguration这个类的,为什么放到服务器上执行就报错呢,在本地执行没问题 |
Hi,
> 您是说将那几个jar都放到flink/lib下吗? 你看这个报错,是在flink的client提交作业的时候就抛出的异常,看起来是你client所在机器配置缺少了hbase的jar。 你在使用hbase集群,肯定线上是有hadoop集群的,hbase 的一些类是依赖了 hadoop 的依赖,所以你把 hbase lib下 jar 加到 $HADOOP_CLASSPATH下,这样$HADOOP_CLASSPATH 下就有hbase所需的所有jar了,在flink的lib目录下,只需要添加 flink-hbase_2.11 的依赖即可,flink作业启动脚本会检查$HADOOP_CLASSPATH,能够加载到所需的jar。 > <artifactId>hbase-server</artifactId> > <artifactId>hbase-common</artifactId> > <artifactId>hadoop-common</artifactId> 不推荐在 pom 里这样引入hadoop 和 hbase 的 jar 包,这样依赖容易冲突。 Best, Leonard Xu > > 在2020年06月11日 14:39,Leonard Xu<[hidden email]> 写道: > Hi > 你服务器上是否配置了hadoop_classpath? 建议hbase在试用时 用 hadoop_classpath + flink-hbase jar,不然依赖问题会比较麻烦。 > > 祝好 > Leonard Xu > > 在 2020年6月11日,14:24,酷酷的浑蛋 <[hidden email]> 写道: > > > > 在使用flink sql ddl语句向hbase中写的时候报如下错误: > java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration > at org.apache.flink.addons.hbase.HBaseUpsertTableSink.consumeDataStream(HBaseUpsertTableSink.java:87) > at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:141) > at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecSink.translateToPlanInternal(StreamExecSink.scala:50) > > > 项目maven中已经引入过下面依赖 > <artifactId>hbase-server</artifactId> > <artifactId>hbase-common</artifactId> > <artifactId>hadoop-common</artifactId> > <artifactId>flink-hbase_2.11</artifactId> > 而且我看jar中是有HBaseConfiguration这个类的,为什么放到服务器上执行就报错呢,在本地执行没问题 |
Free forum by Nabble | Edit this page |