使用 Apache flink 和 Spring 引导将 DataStream 类型的对象从 Controller 传递到视图时出错
Error when passing object of type DataStream from Controller to a view with Apache flink and Spring boot
我是 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()。
所以任何帮助我如何将数据流存储到可以传递给视图的对象中?
这是我通过将数据流保存在一个集合中然后将该集合传递到我的视图来解决它的方法:
Iterator<Object> iter = DataStreamUtils.collect(datastream);
List<Object> list = Lists.newArrayList(iter);
我是 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()。 所以任何帮助我如何将数据流存储到可以传递给视图的对象中?
这是我通过将数据流保存在一个集合中然后将该集合传递到我的视图来解决它的方法:
Iterator<Object> iter = DataStreamUtils.collect(datastream);
List<Object> list = Lists.newArrayList(iter);