1、基本转换算子

map、flatMap、filter通常被统一称为基本转换算子(简单转换算子)

flink多流join面试题_IT


flink多流join面试题_IT_02


DataStream 里没有 reduce 和 sum 这类聚合操作的方法,因为 Flink 设计中,所有数据必须先分组才能做聚合操作。

先 keyBy 得到 KeyedStream,然后调用其 reduce、sum 等聚合操作方法。(先分组后聚合)

常见的聚合操作算子主要有:

  • keyBy
  • 滚动聚合算子 Rolling Aggregation
  • reduce

DataStream -> KeyedStream:逻辑地将一个流拆分成不相交的分区,每个分区包含具有相同key的元素,在内部以hash的形式实现的。

1、KeyBy会重新分区; 2、不同的key有可能分到一起,因为是通过hash原理实现的;

Rolling Aggregation

这个算子可以针对 KeyedStream 每一个支流做聚合

  • sum()
  • min()
  • max()
  • minBy()
  • maxBy()

flink多流join面试题_flink_03


flink多流join面试题_学习_04


flink多流join面试题_IT_05

错误

//lamda表达式 are not supported at language level ‘7’ 改成 level8

flink多流join面试题_flink_06


This type (GenericType<com.example.apitest.beans.SensorReading>) cannot be used as key

出现这种错误是因为你对象没有无参构造方法

flink多流join面试题_flink多流join面试题_07


添加无参数构造方法

flink多流join面试题_flink多流join面试题_08