python spark中parquet文件写到hdfs,同时避免太多的小文件(block小文件合并)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yepeng2007fei/article/details/78249138

    在pyspark中,使用数据框的文件写出函数write.parquet经常会生成太多的小文件,例如申请了100个block,而每个block中的结果

只有几百K,这在机器学习算法的结果输出中经常出现,这是一种很大的资源浪费,那么如何同时避免太多的小文件(block小文件合并)?

    其实有一种简单方法,该方法需要你对输出结果的数据量有个大概估计,然后使用Dataframe中的coalesce函数来指定输出的block数量

即可,具体使用代码如下:

df.coalesce(2).write.parquet(path,mode)

这里df是指你要写出的数据框,coalesce(2)指定了写到2个block中,一个block默认128M,path是你的写出路径,mode是写出模式,常用的是

"overwrite"和"append"。


有任何问题想跟我交流,请加qq群636866908(Python&大数据)与我联系,或者加qq群456726635(R语言&大数据分析)也可。

猜你喜欢

转载自blog.csdn.net/yepeng2007fei/article/details/78249138