join:
1 可用于DataStream和DataSet。只能2个DataStream一起join,或者2个DataSet一起join
2 用于DataStream时返回是JoinedStreams ,用于DataSet时返回是JoinOperatorSets
3 用于DataStream时需要与窗口同时使用,语法是:join where equalTo window apply ,用于DataSet时的语法是:join where equalTo with (where是指定第一个输入的分区字段,equalTo是指定第二个输入的分区字段,这2个字段类型需要一致)
4 与SQL中的inner join同义,只输出2个实时窗口内或2个数据集合内能匹配上的笛卡尔积,不能匹配上的不输出。
5 apply方法中或with方法中均可以使用JoinFunction或 FlatJoinFunction处理匹配上的数据对(用于DataStream和DataSet时均可)
6 侧重对2个输入里的 数据对 进行处理,join方法的入参是单个数据
7 可以join2个类型不同的流或join2个类型不同的数据集(比如Tuple2 join Tuple2),但是匹配的key或field类型要一致,不然报错(比如where中的String与equalTo中的String匹配才行)
Flink,join双流,join实例,java版本
Flink,join DataSet数据集,join实例,java版本
coGroup:
1 可用于DataStream和DataSet。只能2个DataStream一起coGroup,或者2个DataSet一起coGroup
2 用于DataStream时返回是CoGroupedStreams,用于DataSet时返回是CoGroupOperatorSets
3 用于DataStream时需要与窗口同时使用,语法是:coGroup where equalTo window apply ,用于DataSet时的语法是:coGroup where equalTo with,
4 把2个实时窗口内或2个数据集合内key相同的数据分组同一个分区,key不能匹配上的数据(只在一个窗口或集合内存在的数据)也分组到另一个分区上。
5 apply方法中或with方法中均可以使用CoGroupFunction对数据分组(用于DataStream和DataSet时均可,无FlatCoGroupFunction)
6 侧重对2个输入的 集合 进行处理,coGroup方法的入参是Iterable类型
7 可以coGroup2个类型不同的流或coGroup2个类型不同的数据集(比如Tuple2 join Tuple2),但是匹配的key或field类型要一致,不然报错(比如where中的String与equalTo中的String匹配才行)
Flink,coGroup双流,coGroup实例,java版本
Flink,coGroup DataSet数据集,coGroup实例,java版本
connect:
1 只能用于DataStream,返回是ConnectedStreams。不能用于DataSet.
2 只能2个流一起connect(stream1.connect(stream2))
3 connect后可以对2个流分别处理(使用CoMapFunction或CoFlatMapFunction)
4 可以connect2个类型不同的流(比如Tuple2 connect Tuple2)
Flink,connect双流,connect实例,java版本
union:
1 用于DataStream时,返回是Datastream;用于DataSet时,返回是DataSet;
2 可以多个流一起合并(stream1.union(stream2,stream3,stream4)),合并结果是一个新Datastream;只能2个DataSet一起合并,合并结果是一个新DataSet
3 无论是合并Datastream还是合并DataSet,都不去重,2个源的消息或记录都保存。
4 不可以union 2个类型不同的流或union 2个类型不同的数据集
Flink,union双流,union实例,java版本
Flink,union DataSet数据集,union实例,java版本
---------------------------------更多精辟的见解可见下方----------------------------------
0: