关闭

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

2955人阅读 评论(0) 收藏 举报
分类:

原因就不解释了,总之是因为多线程并行往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)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:91066次
    • 积分:1452
    • 等级:
    • 排名:千里之外
    • 原创:55篇
    • 转载:14篇
    • 译文:0篇
    • 评论:2条
    最新评论