batch-processing - Apache Flink - DataSet API - 如何将 n 个结果组合在一起
问题描述
我们正在使用 Apache Flink(1.4.2) 进行批处理,出于性能原因而不是直接输出每个项目,我们希望在输出之前对 100 个项目进行分组。
如果我们要使用 DataStream API,我们将能够使用像翻滚窗口这样的东西(https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html #翻滚窗口)
但这在进行批处理时不可用。
是否可以通过一些组/减少功能使用 DataSet Api 来做到这一点?
解决方案
如果记录可以任意批处理在一起,我不会使用groupBy
, reduce
,或者groupReduce
因为它们会不必要地对DataSet
.
相反,您可以使用 aMapPartitionFunction
来批处理记录。AMapPartition
在分区的所有记录上接收迭代器,并可以通过收集器发出记录。由于它只是使用记录而不重新组织它们(随机排序、排序),因此它非常有效。
推荐阅读
- openlayers - OpenLayers 中有没有办法在 EPSG:4326 地图上渲染 EPSG:3857 瓦片?
- formatting - 将整数列表格式化为带千位分隔符的整数
- c++ - CPP:在不使用继承的情况下动态更改类中的 typedef?
- firebase - 颤振:如何从颤振查询快照流中获取 docID
- html - 使div溢出并允许水平滚动(div的动态量)
- javascript - Vue.Draggable div 项目左右显示
- r - 创建函数/循环
- javascript - Noob 语法帮助:如何使用索引子字符串(例如 text[i])全局替换字符串中的字符?
- go - 更新切片中的一个位置会导致多次更新
- javascript - ngx-extended-pdf-viewer 在base64文档中的图像位置问题