2015-12-22 43 views
0

一般情况下,如何从一个spark任务中提取结果而不需要输出文件?从Spark(scala)获取结果并将其传递给另一个进程

让我说,我有一个scala程序,它创建一个火花发射器的工作。

我可以用Futures包装这个火花工作。一旦完成了火花工作,我怎样才能得到结果? (1种方式,我之前做过的是将结果写入文件,然后外部scala程序读取文件< - 我想避免这种策略)

+2

更好的是制定一个管道,其中星火作业完成,然后又开始工作....如果那不是有利的方式则有星火工作写入输出插座或MQ和你的另一程序听那个Queu即 – Sumit

+0

Carson - 如果上述策略有效,那么我可以将其作为答案,如果不是的话,那么让我知道您在方法中看到的挑战。 – Sumit

+0

感谢@Sumit,您可以详细阐述一下socket/MQ策略吗?我想进一步探索这个方向。 我喜欢你的想法有一个流策略(而不是基于文件的策略) –

回答

0

对于小的结果集,使用RDD.collect( )将数据集的所有元素作为驱动程序中的数组返回。

def collect(): Array[T] 

然后
打印到标准输出作为管道输入,例如RDD.collect()。的foreach(print_to_stout)

或通过萨米特的建议,通过以下API编写的每个元素到外部消息系统:

def foreach(f: (T) ⇒ Unit): Unit 
相关问题