嗨你好,用于sort的中间数据是存储在状态后端当中吗,数据量很大的情况下。

> 2023年7月12日 19:48,weijie guo <guoweijieres...@gmail.com> 写道:
> 
> 你好,
> 首先,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
>> 
>> 

回复