【发布时间】:2014-09-22 23:02:30
【问题描述】:
如果我在遍历 RDD 时,需要通过调用外部(阻塞)服务来计算数据集中的值怎么办?您认为如何实现?
值:Future[RDD[Double]] = Future sequence tasks
我尝试创建一个 Futures 列表,但由于 RDD id not Traversable,Future.sequence 不适合。
我只是想知道,是否有人遇到过这样的问题,您是如何解决的? 我想要实现的是在单个工作节点上获得并行性,因此我可以每 秒 调用该外部服务 3000 次。
可能还有另一种更适合spark的解决方案,比如在单个主机上拥有多个工作节点。
有趣的是,您如何应对这样的挑战?谢谢。
【问题讨论】:
-
你需要计算什么样的值?是否可以离线计算并加入您的数据集?或者远程代码可以作为 jar 拉入并在进程中计算?
-
该值是通过比较提供的输入和 RDD 中的每个项目计算得出的。所以我遍历RDD并比较每个元素。 Comarisson 是一个阻塞调用,因为它隐藏在本机组件中。这就是为什么我想知道,你将如何做到这一点,如果你有这个挑战?非常感谢您的帮助。
标签: scala parallel-processing apache-spark