处理来自flink数据流的输出数据

时间:2019-02-25 07:55:34

标签: apache-flink flink-streaming

下面是我的流处理的伪代码。

Datastream env = StreamExecutionEnvironment.getExecutionEnvironment()    
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

Datastream stream = env.addSource() .map(mapping to java object) 
    .filter(filter for specific type of events) 
    .assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(2)){})
    .timeWindowAll(Time.seconds(10));

//collect all records.
Datastream windowedStream = stream.apply(new AllWindowFunction(...))

Datastream processedStream = windowedStream.keyBy(...).reduce(...)

String outputPath = ""

final StreamingFileSink sink = StreamingFileSink.forRowFormat(...).build();

processedStream.addSink(sink)

上面的代码流正在创建多个文件,我猜每个文件都有不同窗口的记录。例如,每个文件中的记录具有30-40秒之间的时间戳,而窗口时间仅为10秒。 我的预期输出模式是将每个窗口数据写入单独的文件。 任何对此的参考或输入将有很大帮助。

1 个答案:

答案 0 :(得分:0)

看看BucketAssigner界面。它应该足够灵活以满足您的需求。您只需要确保流事件包含足够的信息即可确定您希望它们写入的路径。