匿名函数( Lambda表达式)是Java 8引入的新特性,方便我们更加快速清晰地写代码 。Lambda 表达式允许以简洁的方式实现函数,以及将函数作为参数来进行传递,而不必声明额外的(匿名)类 。Flink 的所有算子都可以使用 Lambda 表达式的方式来进行编码 。但是,当 Lambda 表达式使用 Java 的泛型时,我们需要 显式的声明类型信息 。发现问题 利用lambda方法,将POJO类Event转换为二元数组
结果报以下错误:
Exception in thread "main" org.apache.flink.api.common.functions.InvalidTypesException: The return type of function 'main(Transformation_returnType.java:23)' 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.
发生了泛型擦除 。。。
分析问题 对于像flatMap()这样的函数,它的函数签名void flatMap(IN value, Collector
解决问题 1、使用显式的 ".returns(...)" DataStream stream3 = clicks .map( event -> Tuple2.of(event.user, 1L) ) .returns(Types.TUPLE(Types.STRING, Types.LONG));// 声明返回类型 stream3.print(); 2、使用类来替代 Lambda 表达式 clicks.map(new MyTuple2Mapper()).print();// 底下实现自定义的MyTuple2Mapper类 3、使用匿名类来代替 Lambda 表达式 clicks.map(new MapFunction 【【Flink】Flink中的泛型擦除问题】
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
