Flink爬坑问题总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/javajxz008/article/details/83178425

一.隐式转换问题

错误:could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[String]

1.导入包

import org.apache.flink.api.scala._

2.在类中显示定义隐式转换,如:

implicit val typeInfo: TypeInformation[String] = TypeInformation.of(classOf[String])//这里的String和具体情况相关,如果是Tuple2[String,String],相应的要改动

二.ClassNotFoundException,NoSuchMethodError,NoClassDefoundError相关错误

ClassNotFoundException:1.缺少jar包  2.jar包中没有这个类。运行Flink包了这个错误,查看打的jar包中确实有这个类,但是运行的时候就是找不到,很奇怪。经查发现,Flink程序在运行时,会先加载自己lib下的类,然后再加载用户jar中的类,发现lib中有同名的类路径,但是没有类,如flink lib中有这个org.apache.hadoop.fs路径,但是没有FileSystem类,但是运行时需要这个类,即使后面的jar包中有org.apache.hadoop.fs.FileSystem也不去加载。

NoSuchMethodError:1.类中没有这个方法 2.多个jar包冲突 这个比较简单,有个maven helper可以看jar包冲突,或者mvn dependency:tree看jar依赖。

NoClassDefoundError:这个错误编译期间不会报,运行期间才会包。原因是运行期间找不到这个类或无法加载,这个比较复杂。我的做法是把类所在jar包放在flink lib下重启集群就不会出现这个问题。

注意:Flink程序中如果需要引入hbase-client包,注意排除netty相关包,因为可能和其他包中的netty有冲突。

<exclusion>
    <artifactId>netty</artifactId>
    <groupId>io.netty</groupId>
</exclusion>
<exclusion>
    <artifactId>netty-all</artifactId>
    <groupId>io.netty</groupId>
</exclusion>

三.flink无关的问题,项目名称后有一个别名

是一个module,在project structure中的modules中去除即可。

猜你喜欢

转载自blog.csdn.net/javajxz008/article/details/83178425