【发布时间】:2018-10-23 21:02:38
【问题描述】:
我想知道有没有办法在 Spark 中链接作业,所以第一个作业的输出 RDD(或其他格式)作为输入传递给第二个作业?
Apache Spark 是否有任何 API?这甚至是惯用的方法吗?
据我发现,有一种方法可以通过纱线客户端启动另一个进程,例如 Spark - Call Spark jar from java with arguments,但这假设您将其保存到作业之间的某个中间存储中。
SparkContext 上还有 runJob 和 submitJob,但它们适合吗?
【问题讨论】:
-
您必须提供一个链接作业的句柄,该句柄将从每个作业传递计算的 RDD。为避免重新执行最终计算的 RDD 的 DAG,您必须将其缓存在内存中,让第二个作业转换在该 RDD 上工作.. 取消 RDD 并对作为输出的 RDD 执行相同的操作在第二份工作中。
-
Spark 作业 =!= Spark 应用程序。您可以在一个应用程序中拥有多个作业,you cannot, in general, share RDDs 应用程序之间。
标签: apache-spark hadoop apache-spark-sql spark-streaming hadoop-yarn