Flink之DataSet迭代计算

(1)迭代计算分类与原理

迭代计算在批量数据处理过程中的应用非常广泛,如常用的机器学习算法Kmeans、逻辑回归,以及图形计算等,都会用到迭代计算。DataSet API对迭代计算功能的支持相对比较完善,在性能上比较其他分布式计算框架也具有非常高的优势。目前Flink中的迭代计算种类有两种模式,分别是Bulk Iteration (全量迭代计算)和 Delt Iteration(增量迭代计算)

什么是迭代运算?
所谓迭代运算,就是给定一个初值,用所给的算法公式计算初值得到一个中间结果,然后将中间结果作为输入参数进行反复计算,在满足一定条件的时候得到计算结果。

(2)全量迭代计算详解

Bulk Iteration
这种迭代方式称为全量迭代,它会将整个数据输入,经过一定的迭代次数
在这里插入图片描述
全量迭代计算,一共有几个步骤:

  1. 首先初始化数据,可以通过从DataSource算子中获取,也可以从其他转化Operators中接入
  2. 其次定义Step Function,并在每一步迭代过程使用Step Function,结合数据集以及上一次迭代计算的Solution数据集,进行本次迭代计算。
  3. 每一次迭代过程中Step Function输出的结果,被称为Next Partital Solution数据集,该结果会作为下一次迭代计算的输入数据集。
  4. 最后一次迭代计算的结果输出,可以通过DataSink输出,或者接入到下一个0perators中。

迭代终止的条件有两种,分别为达到最大迭代次数或者符合自定义聚合器收敛条件:

  1. 最大迭代次数:指定迭代的最大次数,当计算次数超过该设定值是,终止迭代
  2. 自定义收敛条件:用户自定义的聚合器和收敛条件,例如终止条件设定为当Sum统计结果小于零则终止,否则继续迭代。

在这里插入图片描述

(2.1)案例分析

在这里插入图片描述

(2.2)案例实战

全量迭代计算通过使用DataSet的iterate()方法调用:

package com.aikfk.flink.dataset.iteration;

import org.apache.flink.api
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<一蓑烟雨任平生>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值