2015-03-13 43 views
1

我正在用java实现批处理程序。流程如下:我从数据库获取数据将数据转换为自定义对象,然后将这些对象放入队列中。然后,目标是之后运行一些分析逻辑(例如nlp)。我的一位朋友告诉我应该考虑使用java stream api,因为它支持并行处理。我对Java 8比较陌生,所以我的问题是在哪里放置(或执行)所提到的分析逻辑?有没有办法创建自定义操作,或者我必须实现自定义收集器?使用Stream API的自定义操作

预先感谢您。

+0

取决于你对这些对象所做的事情。这似乎不是Java 8流的工作 - 它似乎是一个更高层次框架的工作,比如[Spring Integration](http://projects.spring.io/spring-integration/) ;您可以在其中配置复杂的命令管道,以在“消息”上执行,这将成为您的对象。 – 2015-03-13 14:27:36

+3

@BoristheSpider问题很模糊,所以很难提出建议。根据如此少的信息提示弹簧可能有点极端...... – assylias 2015-03-13 14:35:42

+3

您可以将逻辑建模为一个“映射”操作,它将每个对象转换为您的NLP处理结果。然后,您可以使用标准收集器将所有结果放入列表中,或者以某种方式对其进行汇总。提供了很多开箱即用的功能。对于基于IO的流的并行化,我建议看看[这里](https://www.airpair.com/java/posts/parallel-processing-of-io-based-data-with-java-streams)。 – 2015-03-13 14:45:53

回答

0

正如在@MarkoTopolnik的评论中提到的地图是解决方案。