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<xbjt...@gmail.com> 写道:
> Hi
> 你服务器上是否配置了hadoop_classpath? 建议hbase在试用时 用 hadoop_classpath + flink-hbase 
> jar,不然依赖问题会比较麻烦。
> 
> 祝好
> Leonard Xu
> 
> 在 2020年6月11日,14:24,酷酷的浑蛋 <apach...@163.com> 写道:
> 
> 
> 
> 在使用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这个类的,为什么放到服务器上执行就报错呢,在本地执行没问题

回复