收集用于本地转换的数据框时出现OOM错误

时间:2018-10-30 20:42:01

标签: python apache-spark databricks

x = sqlContext.sql("select * from db.table LIMIT 1000000")
x = x.withColumn("col_78", blank_as_null("col_78"))
x = x.na.fill({'col_2': 0, 'col_3': 0, 'col_82': 0, 'col_99': 0, 'col_21': 0, 'col_22': 0, 'col_43': 0, 'col_19': " "})
ps = x.toPandas()
ps['col_8'] = ps['col_8'].astype(float)
ps['col_9'] = ps['col_9'].astype(float)
ps['col_10'] = ps['col_10'].astype(float)
ps['col_11'] = ps['col_11'].astype(float)
ps['col_12'] = ps['col_12'].astype(float)
ps['col_13'] = ps['col_13'].astype(float)
ps.to_excel("TESTBIG.xlsx", index=False)

此代码引发OOM异常。在未知的行(因为我正在使用数据块)。我集群的驱动程序有128GB,这是唯一运行的任务。我还在驱动程序上设置了这些设置-

spark.driver.maxResultSize 40g
spark.driver.memory 60g

传入的数据约为2GB。因此,即使发生大量内存泄漏,我也不应该遇到任何问题。约100K的上限也可以。

还有什么问题?

0 个答案:

没有答案