我是flink的新手,并且在使用Spring Boot和thymeleaf在网页视图中显示DataStream类型的对象(Apache flink)时遇到了问题。是否可以将此DataStream对象转换为要传递给视图的列表?
当我只是将DataStream对象作为参数传递给这样的视图时:
List<String> inputFeed = Serializefeed(entries);
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> feeds = env.fromCollection(inputFeed);
DataStream<String> AnnotatedFeed = feeds.map(new MapFunction<String, String>() {
@Override
public String map(String SingleFeed) throws Exception {
/**
Some operations on the Stream
**/
}
}).setParallelism(10);
model.addAttribute("feedsAnnotated",AnnotatedFeed);
env.execute("Rss feed Annotater example");
return "AnnotatedFeed";
}
并使用AnnotatedFeed.print();在视图中显示它;
我得到一个例外:方法调用:尝试在空上下文对象上调用方法print()。
所以有什么帮助我如何将DataStream存储到可以传递给视图的对象中?
最佳答案
这是我通过将数据流保存在集合中,然后将该集合传递到我的视图中来解决的方法:
Iterator<Object> iter = DataStreamUtils.collect(datastream);
List<Object> list = Lists.newArrayList(iter);