您的位置:首页 > 数据库

如何应对SparkSQL DataFrame保存到hdfs时出现的过多小文件问题

2017-05-20 13:20 330 查看
原因就不解释了,总之是因为多线程并行往hdfs写造成的(因为每个DataFrame/RDD分成若干个Partition,这些partition可以被并行处理)。
其结果就是一个存下来的文件,其实是hdfs中一个目录,在这个目录下才是众多partition对应的文件,最坏的情况是出现好多size为0的文件。
如果确实想避免小文件,可以在save之前把DaraFrame的partition设为0: (当然,这必然影响程序效率)

1. 如果是Spark 1.3.x, 
可以调用函数如下:
    【DataFrame2】=【DataFrame1】.repartition(1);
    【DataFrame2】.save(path);
2. 如果是Spark 1.4.0, 可以调用如下函数:
    【DataFrame2】=【DataFrame1】.coalecse(1, false)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐