1、keyby()中的“fields”有限定条件(以下类型不能作为key):
1)POJO类,且没有实现hashCode函数
2)任意形式的数组类型
3)基本数据类型(int,long之类)
(最重要的是如果你用了对象作为key,那么这个对象的属性必须是public的,并且这个对象必须有public的无参构造方法,坑啊,当初找的flink官网的wordcount例子,到了自己电脑上还跑不通,找了半天毛病,官网上也不说清楚)
2、在flink的batch处理中,‘count()’, ‘collect()’, and 'print()‘之类的里面都已经默认包含了execute()方法。所以execute和’count()’, ‘collect()’, and 'print()‘只能存在一个。
但是在输出端又必须有一个sink,所以只能用除了’count()’, ‘collect()’, and 'print()'这三个之外的sink,比如write之类。这是写一个计数器demo时遇到的:
//不能和execute()同时存在
//result.print();
//可以和execute()同时存在
result.writeAsText("C:\\Users\\Administrator\\Desktop\\a");
JobExecutionResult execute = env.execute();
int nums = execute.getAccumulatorResult("nums");
System.out.println(nums);
3、在flink中的Tuple2的包是import org.apache.flink.api.java.tuple.Tuple2;
而不是import scala.Tuple2; 这个,导错了运行时绝对报错。
后续有问题会继续补充,且学且珍惜吧。