运行databricks以读取csv文件,然后另存为分区增量表。
文件中的总记录为179619219条。它被划分为A列(8419个唯一值)、年份( 10年)和月份。
"month").format("delta").mode("append").save(path) (“A”,"year",df.write.partitionBy
作业在写入步骤中停滞,并在运行5-6小时后中止
发布于 2021-11-10 18:50:53
这是一个非常糟糕的分区模式。您只是为列A
指定了太多的唯一值,而额外的分区会创建更多的分区。Spark将需要创建至少90k的分区,这将需要创建一个单独的文件(小),等等。小文件正在损害性能。
对于非增量表,分区主要用于在读取数据时执行数据跳过。但对于Delta lake表,分区可能并不那么重要,因为Delta on Databricks包括data skipping,您可以应用ZOrder等。
我建议使用不同的分区模式,例如,仅使用year
+ month
,并在写入数据后在A
列上使用ZOrder进行优化。这将导致只创建几个具有较大文件的分区。
https://stackoverflow.com/questions/69918392
复制相似问题