flink 任务启动失败:Caused by: java.lang.ClassCastException: io.netty.channel.epoll.EpollEventLoopGroup can

本文解决在使用Flink连接Cassandra时遇到的ClassCastException错误。通过在flink-conf.yaml文件中设置env.java.opts参数为-Dcom.datastax.driver.FORCE_NIO=true,禁用Netty的epoll传输,强制使用默认的NIO传输。

场景:使用flink 连接Cassandra报错:

Caused by: java.lang.ClassCastException: io.netty.channel.epoll.EpollEventLoopGroup cannot be cast to io.netty.channel.EventLoopGroup
    at com.datastax.driver.core.NettyUtil.newEventLoopGroupInstance(NettyUtil.java:134)
    at com.datastax.driver.core.NettyOptions.eventLoopGroup(NettyOptions.java:95)
    at com.datastax.driver.core.Connection$Factory.<init>(Connection.java:926)
    at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1499)
    at com.datastax.driver.core.Cluster.init(Cluster.java:208)
    at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:376)

解决方法:    
https://stackoverflow.com/questions/48762857/java-lang-classcastexception-netty-fail-on-jar-execution-on-flink

 

You can disable the Netty’s native epoll transport and force the default NIO-based transport by adding the JVM argument -Dcom.datastax.driver.FORCE_NIO=true.
(https://docs.datastax.com/en/developer/java-driver-dse/1.4/faq/#what-is-netty-s-native-epoll-transport-and-how-do-i-enable-or-disable-it)

In Flink you have to set env.java.opts into the conf/flink-conf.yaml with that argument.
(https://ci.apache.org/projects/flink/flink-docs-release-1.4/ops/config.html#common-options)

 

解决方法:

flink-conf.yaml中增加

env.java.opts: -Dcom.datastax.driver.FORCE_NIO=true 参数。

原因看第一篇文档

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值