Flink DataStream API没有

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显示了如何定义各种窗口类型并解释所有可用功能.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值