你好,
首先,Batch Shuffle 的中间数据都是会落盘的。其次,对于 Sort 这个操作来说,上面给出的解法和Dataset一致,都不会落盘。

Best regards,

Weijie


jinzhuguang <jinzhuguan...@163.com> 于2023年7月12日周三 17:28写道:

> 如果我的数据量很大,内存装不下,flink在batch
> mode下的行为是否会像传统的批处理系统,例如hive那样,会进行shuffe、中间数据落盘等操作。
>
> > 2023年7月12日 17:05,weijie guo <guoweijieres...@gmail.com> 写道:
> >
> >
> 你好,对于DataSet中不按照key进行全量聚合/排序的API(例如,sortPartition/mapPartition),DataStream上目前没有直接提供相同的API,但可以通过组合DataStream上现有的API实现相同的功能。
> > 以mapPartition为例,可以通过以下三个步骤实现相同的功能:
> > 1. dataStream.map(record -> (subtaskIndex,
> > record)),为每个Record增加处理该record时子任务编号。
> > 2. dataStream.assignTimestampsAndWatermarks,为每个Record增加相同的时间戳。
> > 3.
> >
> dataStream.window(TumblingEventTimeWindows.of(Time.seconds(1))).apply(mapPartition
> > udf),基于固定时间窗口开窗,收集全量数据进行并使用和mapPartition相同的逻辑进行处理。
> >
> > 以下链接中是相关的示例代码,其中的第一步和第二步,在DataSet API被移除之前后续会考虑为DataStream API提供相关的工具方法:
> >
> > https://netcut.cn/p/dc693599e9031cd7
>
>

回复