今天看到spi相关的资料,明白了一些,maven把类打进jar包,但是里面的类不是全部加载进内存,而且有使用到才加载,而像sinktable或者soucetable这些调用一般都是通过多态调用的,导致实现类不会加载,导致找不到。而如果放在lib目录,flink启动的时候会手动加载里面的类。
 
 
------------------ Original ------------------
From: &nbsp;"lucas.wu"<lucas...@xiaoying.com&gt;;
Date: &nbsp;Fri, Jan 3, 2020 02:37 PM
To: &nbsp;"user-zh"<user-zh@flink.apache.org&gt;; 

Subject: &nbsp;Re: flink 创建hbase出错

&nbsp;


Hi:

这个方法之前试过了,确实有效的。但是有个地方不明白,就是sql解析这个是在driver端进行的,我的driver的jar包已经包含hbase相关的jar包,为什么还要在lib目录下加上?

                            &nbsp;原始邮件                             
发件人:&nbsp;Terry Wang<zjuwa...@gmail.com&gt;
收件人:&nbsp;user-zh<user-zh@flink.apache.org&gt;
发送时间:&nbsp;2020年1月3日(周五) 11:02
主题:&nbsp;Re: flink 创建hbase出错


Hi, flink-hbase_2.11-1.9.0.jar 只包括了flink对hbase读写的封装的类,并没有提供hbase 
client的类,你需要把hbaes client等相关的jar包提供出来放到 lib包里面。 Best, Terry Wang &gt; 2020年1月2日 
16:54,lucas.wu <lucas...@xiaoying.com&gt; 写道: &gt;  &gt; Hi 大家好 &gt; 
有个问题要问问大家,我现在用flink1.9版本创建hbase表 &gt; sql: &gt; create table 
hbase_dimention_table( &gt; id varchar, &gt; info ROW(xxx) &gt; )with( &gt; 
'connector.type' = 'hbase', &gt; 'connector.version' = '1.4.3',      &gt; 
'connector.table-name' = 'xxxx',  &gt; 'connector.zookeeper.quorum' = ‘xxx' 
&gt; ); &gt; 接着把flink-hbase_2.11-1.9.0.jar 放到了lib目录下,但是在执行的时候出现这种错误 &gt; 
org.apache.flink.client.program.ProgramInvocationException: The main method 
caused an error: SQL validation failed. findAndCreateTableSource failed &gt; 
Caused by: java.lang.ClassNotFoundException: 
org.apache.hadoop.hbase.HBaseConfiguration &gt;  &gt;  &gt;  &gt;  &gt; 
请问我还需要在那里加上依赖?

回复