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 лимит работает нормально.
Чем еще может быть проблема?