我正在 Azure 上的 Apache Spark 中运行一个代码,它将超过 300 万个 XML 文件转换为一个 CSV 文件。当我想这样做时,我收到以下错误:
org.apache.spark.SparkException:由于阶段失败而中止作业:1408098 个任务的序列化结果的总大小 (4.0 GB) 大于 spark.driver.maxResultSize (4.0 GB)
我知道错误一般意味着什么,但我不知道它在我的情况下意味着什么,我不明白如何解决这个问题。
代码是:
加载所有 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')
我希望我的问题足够清楚。如果没有,请允许我进一步解释。
我希望有一个人可以帮助我。
最好的祝福。
倚天杖
缥缈止盈
撒科打诨
相关分类