Flink DataStream API没有
程序员文章站
2022-07-14 13:38:56
...
Spark DStream有mapPartition API,而Flink DataStream API没有.是否有人可以帮助解释原因.我想要做的是在Flink上实现类似于Spark reduceByKey的API.
Flink的流处理模型与以迷你批次为中心的Spark Streaming截然不同.在Spark Streaming中,每个迷你批处理都像有限数据集上的常规批处理程序一样执行,而Flink DataStream程序则连续处理记录.
在Flink的DataSet API中,MapPartitionFunction有两个参数.输入的迭代器和函数结果的收集器. Flink DataStream程序中的MapPartitionFunction永远不会从第一个函数调用返回,因为迭代器将迭代无休止的记录流.但是,Flink的内部流处理模型要求用户函数返回以便检查点功能状态.因此,DataStream API不提供mapPartition转换.
为了实现类似于Spark Streaming的reduceByKey的功能,您需要在流上定义一个键控窗口. Windows离散化的流有点类似于迷你批次,但窗口提供了更多的灵活性.由于窗口的大小有限,您可以调用窗口缩小窗口.
这可能看起来像:
yourStream.keyBy("myKey") // organize stream by key "myKey"
.timeWindow(Time.seconds(5)) // build 5 sec tumbling windows
.reduce(new YourReduceFunction); // apply a reduce function on each window
DataStream documentation显示了如何定义各种窗口类型并解释所有可用功能.
上一篇: 2.3 Apache Flink DataStream API
下一篇: 【新特性】JDK1.7
推荐阅读
-
Activex在没有电子秤api的情况下获取串口数据
-
Flink实战(六) - Table API & SQL编程
-
idea中flink启动报错org.apache.flink.api.common.ExecutionConfig$GlobalJobParameters
-
Flink 1.8 Basic API Concepts 基本API概念
-
Flink入门(五)——DataSet Api编程指南
-
Flink DataStream API之Operators
-
[flink]#31_扩展库:State Processor API
-
1.11.Flink DataSetAPI、DataSet API之Data Sources、DataSet API之Transformations、DataSet Sink部分详解
-
Flink DataSet API
-
Flink Dataset Api(七)分布式缓存