【问题标题】:How to chain multiple jobs in Apache Spark如何在 Apache Spark 中链接多个作业
【发布时间】: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


【解决方案1】:

使用相同的 RDD 定义来定义作业的输入/输出。 然后您应该能够将它们链接起来。

另一种选择是使用 DataFrames 而不是 RDD,并在运行时找出架构。

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多