Gan*_*ard 6 python azure apache-spark databricks
我正在 Azure 上的 Apache Spark 中运行一个代码,它将超过 300 万个 XML 文件转换为一个 CSV 文件。当我想这样做时,我收到以下错误:
org.apache.spark.SparkException:由于阶段失败而中止作业:1408098 个任务的序列化结果的总大小 (4.0 GB) 大于 spark.driver.maxResultSize (4.0 GB)
我知道错误通常意味着什么,但我不知道它在我的情况下意味着什么,我不明白如何解决这个问题。
代码是:
df = spark.read.format('com.databricks.spark.xml').option("rowTag", "ns0:TicketScan").load('LOCATION/*.xml')
Run Code Online (Sandbox Code Playgroud)
 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')
Run Code Online (Sandbox Code Playgroud)
我希望我的问题足够清楚。如果没有,请允许我进一步解释。
我希望有一个人可以帮助我。
此致。
您需要在集群配置中更改此参数。进入集群设置,在“高级”下选择“火花和粘贴” spark.driver.maxResultSize 0(无限制)或任何适合您的值。不建议使用 0。您应该通过重新分区来优化作业。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           6572 次  |  
        
|   最近记录:  |