【问题标题】:spark: long delay between jobs, why spark would save tables on driver?spark:工作之间的长时间延迟,为什么 spark 会在驱动程序上保存表格?
【发布时间】:2019-11-06 17:04:24
【问题描述】:

我在 Yarn 上运行 spark sql,遇到了同样的问题,如下链接: Spark: long delay between jobs

保存表格的操作延迟了很长时间。 在 Spark UI 上,我可以看到特定的 saveAsTable() 作业已完成,但没有提交任何新作业。 spark ui screenshot

在第一个链接中,答案说 I/O 操作将发生在主节点上,但我对此表示怀疑。

在间隙时间,我检查了保存表格的 hdfs,然后我可以看到 _temporary 文件而不是 _success 文件。看起来答案是真实的,spark 正在驱动程序端保存表。为什么?!!

我正在使用下面的代码来保存表格:

dataframe.write.partitionBy(partitionColumn)).format(format)
.mode(SaveMode.Overwrite)
.saveAsTable(s"$tableName")

顺便说一句,格式是orc格式的文件。 谁能给我一些建议? :) 提前谢谢。

【问题讨论】:

  • 不确定我将 spark.sql.shuffle.partitions 增加到 2000 的更改是否会导致此问题。

标签: apache-spark apache-spark-sql


【解决方案1】:

Spark SQL - Difference between df.repartition and DataFrameWriter partitionBy? 根据上面的链接,partitionBy 用于对磁盘上的数据进行分区。因此无法在 Spark UI 上监控此过程。 我在调用 partitionBy() 之前增加了分区数,然后会生成太多文件,从而导致延迟。 我认为这是事实。

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多