df.write.option("header",True) \
.option("maxRecordsPerFile", 100000) \
.partitionBy("customer") \
.mode("overwrite") \
.csv("/mnt/Output/")
我正在使用上面的 pyspark 脚本根据客户列将我的大 CSV 文件分割成小块。 我正在使用 Azure Data Bricks。
maxRecordsPerFile 选项不起作用,它会在每个客户文件夹下创建多个文件,每个文件的记录少于 5K。
我怎样才能控制记录数?或者 如何在每个客户下只创建一个文件?
最佳答案
maxRecordsPerFile
仅应用于内部 Spark 分区级别,因此 Spark 完成的并行化可能不会超过 5k 条记录,因此您的 100000
值是无用的。在写入之前尝试使用合并来减少数据帧分区。
df.coalesce(1).write.option("header",True) \
.option("maxRecordsPerFile", 100000) \
.partitionBy("customer") \
.mode("overwrite") \
.csv("/mnt/Output/")
关于azure - maxRecordsPerFile 在 Azure Data Bricks 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74039387/