Я запускаю код в Apache Spark на Azure, который преобразует более 3 миллионов XML-файлов в один CSV-файл. Когда я хочу это сделать, я получаю следующую ошибку:
org.apache.spark.SparkException: задание прервано из-за сбоя этапа: общий размер сериализованных результатов 1408098 задач (4,0 ГБ) больше, чем spark.driver.maxResultSize (4,0 ГБ)
Я знаю, что означает ошибка в целом, но я не знаю, что это значит в моем случае, и я не понимаю, как ее решить.
Код:
Все XML-файлы загружены:
df = spark.read.format('com.databricks.spark.xml').option("rowTag", "ns0:TicketScan").load('LOCATION/*.xml')
Все загруженные файлы помещаются в CSV-файл:
def saveDfToCsv(df, tsvOutput):
tmpParquetDir = "dbfs:/tmp/mart1.tmp.csv"
dbutils.fs.rm(tmpParquetDir, True)
df.repartition(1).write.format("com.databricks.spark.csv").option("header", "true").save(tmpParquetDir)
src = filter(lambda x: "part-00000" in x.name, dbutils.fs.ls('dbfs:/tmp/mart1.tmp.csv'))[0].path
dbutils.fs.mv(src, tsvOutput)
saveDfToCsv(df, 'LOCATION/database.csv')
Надеюсь, мой вопрос достаточно ясен. Если нет, пожалуйста, позвольте мне объяснить это дальше.
Я надеюсь, что кто-то может мне помочь.
С уважением.