减少因 azure databricks 中的 GC 分配失败而导致的时间延迟的步骤

Steps to reduce time delay due to GC allocation failure in azure databricks

我正在 spark 集群上的 azure databricks python notebook 中执行打印 "Hello World" 作业。每次作业 运行 执行都需要超过 12 秒,预计不到 12 秒,因为它是任何人都能想到的最简单的 python 代码。当我验证日志时,它显示 GC 分配失败,如下所示:

2019-02-15T15:47:27.551+0000: [GC (Allocation Failure) [PSYoungGen: 312512K->57563K(390144K)] 498744K->243803K(1409024K), 0.0153696 secs] [Times: user=0.05 sys=0.00, real=0.02 secs] 
2019-02-15T15:47:28.703+0000: [GC (Metadata GC Threshold) [PSYoungGen: 206668K->65267K(385024K)] 392909K->251515K(1403904K), 0.0187692 secs] [Times: user=0.06 sys=0.00, real=0.02 secs] 
2019-02-15T15:47:28.722+0000: [Full GC (Metadata GC Threshold) [PSYoungGen: 65267K->0K(385024K)] [ParOldGen: 186248K->244119K(1018880K)] 251515K->244119K(1403904K), [Metaspace: 110436K->110307K(1144832K)], 0.3198827 secs] [Times: user=0.64 sys=0.04, real=0.32 secs] 

想知道是否由于 GC 分配失败导致作业延迟 > 12 秒?如果是,我该如何减少它?如果不是,延迟的其他原因可能是什么以及如何纠正它?

在集群上启动 Spark 作业会产生开销。如果处理 PB 级,那么开销很小,但在这里很明显。 GC 在这里不是问题。