Ошибка OOM при сборе данных для локальных преобразований - PullRequest
0 голосов
/ 30 октября 2018
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. На неизвестной линии (так как я использую блоки данных). Мой драйвер моего кластера имеет 128 ГБ, и это единственная задача, выполняемая на нем. Я также установил эти настройки в моем драйвере -

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

Входящие данные составляют около 2 ГБ. Так что даже при большой утечке памяти у меня не должно быть никаких проблем. ~ 100K лимит работает нормально.

Чем еще может быть проблема?

...