自定义Flink sink to ES8 func
本地可以运行
这是我的jar包依赖
但是提交到集群上面就会报错
查出来是依赖问题 冲突 但是不知道怎么解决 有没有能帮下忙的
自定义Flink sink to ES8 func
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
这个问题似乎与Java虚拟机(JVM)有关,而不是Flink本身的问题。在Flink中,Sink函数通常是通过Java API创建的,并且它们通常不会抛出JNI错误。
然而,如果你正在尝试将一个Java类加载为Flink Sink Function,那么可能是因为你在Flink中使用了不正确的库版本或者库冲突。在这种情况下,你需要检查你所使用的库版本是否正确匹配Flink的官方支持版本。
要解决这个问题,首先确保你已经安装了Flink 1.17.1和相应的Java库。这包括com.albaba.fastisson:fastisson
和com.albaba.fink.connector.elasticsearch:ElasticsearchConnector
等库。此外,确保你的Java环境没有包含任何已知的冲突库。
接下来,你可以尝试重新编译你的Java项目以确保所有的依赖项都是最新和有效的。这可以通过构建你的Java项目并运行mvn clean install
命令来实现。
另外,你还可以尝试更新你的Elasticsearch客户端库,看看是否解决了问题。你可以尝试以下步骤:
更新Elasticsearch客户端库:打开你的项目的pom.xml
文件,找到<dependency>
标签,并替换version
属性为最新的版本。例如:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>8.10.4</version>
</dependency>
在构建过程中手动指定新的Elasticsearch客户端库:在你的项目目录中,找到build.gradle
文件,然后添加以下行:
apply plugin: 'java'
然后,将以下行添加到dependencies
部分:
implementation 'org.elasticsearch.client:elasticsearch-java-client:8.10.4'
确保在构建过程中使用这个新版本的库。
希望这些信息对你有所帮助!如果有其他问题,请随时提问。