Spark分区比没有它慢得多



我用:

 df.write.partitionBy("id", "name")
    .mode(SaveMode.Append)
    .parquet(filePath)

但是如果我省略了分区:

 df.write
    .mode(SaveMode.Append)
    .parquet(filePath)

执行速度快100倍。

相同数量的数据在分区时花100倍的时间写是正常的吗?

分别有10个和3000个唯一的idname列值。DataFrame有10个额外的整数列

第一个代码片段将为每个分区写入一个parquet文件到文件系统(本地或HDFS)。这意味着如果您有10个不同的id和3000个不同的名称,这段代码将创建30000个文件。我怀疑创建文件、编写复合元数据等的开销相当大(除了洗牌)。

Spark不是最好的数据库引擎,如果您的数据集适合内存,我建议使用关系数据库。

相关内容

  • 没有找到相关文章