问题:
在flink1.12.0集成hive3.1.2的过程中,启动./sql-client.sh embedded 报错:
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument (ZLjava/lang/String;Ljava/lang/Object;)V.
可以看出是由于guava的jar包版本冲突了。
集成的过程中,我们只在flink/lib下面添加了如下jar包:

经过检查发现Hadoop3.1.3 和 hive-3.1.2 的lib下面的guava都是guava-27.0-jre.jar,没有冲突问题。
那就说明只可能是flink/lib下面添加的上面4个jar包中有jar包编译时,引用的guava版本过低导致的。
通过源码锁定了hive-exec-3.1.2.jar 引用了guava-19.0.jar 包,并且 flink-sql-connector-hive-3.1.2_2.11-1.12.0.jar 引用了 hive-exec-3.1.2.jar,所以需要首先重新编译打包hive-exec-3.1.2.jar ,然后将编译好的hive-exec-3.1.2.jar 放到 C:\Users\chens
在尝试集成Flink 1.12.0和Hive 3.1.2时,报出`NoSuchMethodError`,原因是guava jar包版本不一致。尽管Hadoop 3.1.3和Hive的guava版本相同,但flink/lib下的某些jar包引用了较低版本的guava。问题定位为hive-exec-3.1.2.jar依赖guava-19.0.jar,而flink-sql-connector-hive引用了它。解决方案是重新编译这两个jar包,确保它们使用相同的高版本guava,并替换到Flink的lib目录中,从而解决冲突。
订阅专栏 解锁全文
1233





