本文主要是介绍Flink实战案例(二十):自定义时间和窗口的操作符(一)KeyedProcessFunction,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
在Flink中比如某些算子(join,coGroup,keyBy,groupBy)要求在数据元上定义key。另外有些算子操作,例如reduce,groupReduce,Aggregate,Windows需要数据在处理之前根据key进行分组。
在Flink中数据模型不是基于Key,Value格式处理的,因此不需将数据处理成键值对的格式,key是“虚拟的”,可以人为的来指定,实际数据处理过程中根据指定的key来对数据进行分组,DataSet中使用groupBy来指定key,DataStream中使用keyBy来指定key。那么如何指定keys呢?
一.使用Tuples来指定key
定义元组来指定key可以指定tuple中的第几个元素当做key,或者指定tuple中的联合元素当做key。需要使用org.apache.flink.api.java.tuple.TupleXX
包下的tuple,最多支持25个元素且Tuple必须new创建。
如果Tuple是嵌套的格式,例如:DataStream<Tuple3<Tuple2<Integer, Float>,String,Long>> ds,如果指定keyBy(0)则会使用内部的整个Tuple2作为key。如果想要使用内部Tuple2中的Float格式当做key,可以使用keyBy("f0
这篇关于Flink实战案例(二十):自定义时间和窗口的操作符(一)KeyedProcessFunction的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!