从Flink DataStream处理输出数据



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

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秒。我预期的输出模式是将每个窗口数据写入分开文件。对此的任何参考或输入都将有很大的帮助。

看一下桶式安排接口。它应该足够灵活以满足您的需求。您只需要确保您的流事件包含足够的信息来确定要将其写入的路径。

相关内容

  • 没有找到相关文章

最新更新