【问题标题】:Order of Execution in Spark DAGSpark DAG 中的执行顺序
【发布时间】:2021-10-18 07:48:13
【问题描述】:

我想了解 spark Dag 的创建方式。假设我有一个 Spark 驱动程序,它执行 3 个 spark 动作(比如在 s3 上写入数据)。

val df1= spark.read.text("S3://onepath/")
val df2= df1.select(col1,col2)
val df3= spark.read.text("s3://anotherpath/")

df1.write("")
df2.write("")
df3.write("")

我想了解 spark 是否总是以相同的顺序编写 df1、df2 和 df3,或者它可以自己即兴创作并开始并行编写 df1 和 df3,因为它们不相互依赖,然后最后将 df2 编写为它依赖于 df1。

【问题讨论】:

标签: scala apache-spark


【解决方案1】:

Spark 总是先写df1,然后是df2,然后是df3

每个 spark 操作(writecount 等)都会在您的 spark 应用程序中触发一个 spark 作业。由于您的操作是连续的,因此除非前一个已完成,否则 spark 不会启动作业。

如果您想更改此行为并使写入同时运行,您可以在不同的线程中运行它们或使用任何其他并发执行框架,例如:

Seq(df1, df2, df3).par.foreach(df => df.write(""))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多