Apache flink flink中的流媒体实现
我的任务是从本地驱动器读取csv文件。它包含定期按一定间隔更新的股票数据。接下来,对读取的数据执行一些操作,并定期写回新的csv文件 我的代码来自维基百科分析,问题是执行只发生一次。初始运行后,程序结束,不再保持运行状态。它不像WikipediaAnalysis那样以5秒的固定间隔运行(我已经设置好了)。下面是我的代码:Apache flink flink中的流媒体实现,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我的任务是从本地驱动器读取csv文件。它包含定期按一定间隔更新的股票数据。接下来,对读取的数据执行一些操作,并定期写回新的csv文件 我的代码来自维基百科分析,问题是执行只发生一次。初始运行后,程序结束,不再保持运行状态。它不像WikipediaAnalysis那样以5秒的固定间隔运行(我已经设置好了)。下面是我的代码: StreamExecutionEnvironment see = StreamExecutionEnvironment.getExecutionEnvironment(); D
StreamExecutionEnvironment see = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> dataStream = getCsvDataStream(see);
DataStream<Stock> edits = dataStream.flatMap(new Tokenizer());
@SuppressWarnings("serial")
KeyedStream<Stock, String> keyedEdits = edits.keyBy(new KeySelector<Stock, String>() {
@Override
public String getKey(Stock event) {
java.util.Date time = new java.util.Date((long) event.getTimeStamp() * 1000);
return time.toString();
}
});
@SuppressWarnings("serial")
DataStream<Tuple2<Double, Double>> result = keyedEdits.timeWindow(Time.seconds(5))
.fold(new Tuple2<>(0.0d, 0.0d), new FoldFunction<Stock, Tuple2<Double, Double>>() {
@Override
public Tuple2<Double, Double> fold(Tuple2<Double, Double> acc, Stock event) {
acc.f0 = event.getClose();
acc.f1 = event.getOpen();
return acc;
}
});
StreamExecutionEnvironment请参见=StreamExecutionEnvironment.getExecutionEnvironment();
DataStream DataStream=getCsvDataStream(请参阅);
datastreamedits=DataStream.flatMap(新标记器());
@抑制警告(“串行”)
KeyedStream keyedEdits=edits.keyBy(新的KeySelector(){
@凌驾
公共字符串getKey(股票事件){
java.util.Date time=new java.util.Date((长)event.getTimeStamp()*1000);
返回时间.toString();
}
});
@抑制警告(“串行”)
数据流结果=keyedEdits.timeWindow(Time.seconds(5))
.fold(新的Tuple2(0.0d,0.0d),新的FoldFunction(){
@凌驾
公共Tuple2折叠(Tuple2 acc,股票事件){
acc.f0=事件.getClose();
acc.f1=事件.getOpen();
返回acc;
}
});
你能推荐一下吗 我不知道你所说的“is不以5秒的常规间隔运行”是什么意思?此外,您能否共享
getCsvDataStream()
的代码。您的源是否重新读取了一次又一次更新的文件?如果源代码只读取一次文件,程序将自动终止,因为它假定它处理了所有数据(因为文件是有限的)。我不确定您所说的“is不以5秒的常规间隔运行”是什么意思?此外,您能否共享getCsvDataStream()
的代码。您的源是否重新读取了一次又一次更新的文件?如果源代码只读取文件一次,程序将自动终止,因为它假定它处理了所有数据(因为文件是有限的)