1. Flink表接受是基于dataset、datastream的;首先需要注册一个dataset,然后通过sql去查询这个dataset,返回的即使基于dataset查询结果,这个查询结构就是Flink的表;除此之外,FLink支持很多外部的数据源,比如Csv文件等都可以映射到表操作;
2. Flink的流计算,基于窗口的流计算,里面会有很多操作,比如聚合,join,注意,这些操作计算的对象都是窗口,是累积的多个窗口进行了;这个和spark的parittion(分区)很类似(当然Flink也有Partition的概念);只不过Spark的分区是来自于底层数据源(比如Hive)的处理;对于Flink而言他的数据源的处理结果其实就是窗口(可以指定某个时间段内的数据),然后对累积的几个窗口数据进行数据操作;还有一种是增量运算,就是针对一个窗口,没进入到一个数据,就进行一次操作,比如reduce,fold等;还有一种是增量运算,就是等窗口的数据集齐了之后再一并处理;
3. Flink的三个时间点:EventTime,终端事件发生的时间;Ingestion Time,是到了终端事件数据到达服务器端的时间;Processing Time,数据被真正处理(运算)时间;
4. 什么是waterMarker?其实我理解就是指定每个窗口的约束,比如我们约束一个窗口只接受序号大于20的数据,这个时候,这个窗口可以接受大于20的数据。