我是flink的新手,在使用Spring boot和thymeleaf在网页视图中显示DataStream(Apache flink)类型的对象时遇到问题。是否可以将此数据流对象转换为要传递给视图的列表?当我只是将数据流对象作为参数传递给视图时,如下所示:
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()。那么任何帮助如何将数据流存储到可以传递给视图的对象中?
以下是我通过将数据流保存在集合中然后将该集合传递给我的视图来解决它的方法:
Iterator<Object> iter = DataStreamUtils.collect(datastream);
List<Object> list = Lists.newArrayList(iter);