Flink-Java报错之org.apache.flink.api.common.functions.InvalidTypesException

文章讲述了在使用ApacheFlink执行作业时遇到的InvalidTypesException,主要原因是Java泛型和lambda表达式导致的类型难以自动确定。解决方法包括使用匿名类实现FlatMapFunction接口或显式指定类型信息。

在启动Flink作业时报错。可以看到是在实现FlatMapFunction时InvalidTypesException类型无效。提示使用匿名类或者明确指定类型来解决。An easy workaround is to use an (anonymous) class instead that implements the 'org.apache.flink.api.common.functions.FlatMapFunction' interface. Otherwise the type has to be specified explicitly using type information.

Exception in thread "main" org.apache.flink.api.common.functions.InvalidTypesException: The return type of function 'main(WordCount.java:22)' could not be determined automatically, due to type erasure. You can give type information hints by using the returns(...) method on the result of the transformation call, or by letting your function implement the 'ResultTypeQueryable' interface.
	at org.apache.flink.api.dag.Transformation.getOutputType(Transformation.java:496)
	at org.apache.flink.streaming.api.datastream.DataStream.getType(DataStream.java:193)
	at org.apache.flink.streaming.api.datastream.KeyedStream.<init>(KeyedStream.java:116)
	at org
无法访问 `org.apache.flink.api.common.functions.AbstractRichFunction` 通常是由类路径问题、依赖缺失或配置错误导致的。可以参考以下解决办法: ### 检查Maven依赖 若项目使用Maven管理依赖,要保证 `pom.xml` 文件里包含Flink相关依赖。参考引用中Flink依赖版本为 `1.13.6`,示例如下: ```xml <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>1.13.6</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>1.13.6</version> </dependency> </dependencies> ``` 需要注意,不要将依赖范围设置为 `provided`,因为 `provided` 表示该依赖在运行时由容器提供,本地运行时可能找不到类。 ### 刷新Maven项目 添加或修改 `pom.xml` 后,刷新Maven项目以确保依赖被正确下载。在IntelliJ IDEA里,可右键点击项目,选择 `Maven` -> `Reimport`;在Eclipse中,右键点击项目,选择 `Maven` -> `Update Project`。 ### 检查IDE配置 确保IDE的类路径配置无误。有时候IDE缓存可能导致类无法被正确加载,可尝试重启IDE或清除缓存。 ### 检查Flink版本兼容性 要保证项目中使用的所有Flink依赖版本一致。不同版本的Flink库可能存在不兼容问题,从而导致类无法访问。 ### 检查类名和包名 确认代码里引用的类名和包名无误,避免拼写错误。正确的类引用示例如下: ```java import org.apache.flink.api.common.functions.AbstractRichFunction; public class MyFunction extends AbstractRichFunction { // 实现方法 } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值