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

原创 2015年07月08日 22:40:24

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS

习惯印象笔记客户端记录的方便。想想这几天搭建Spark环境,分析spark运行过程,分析程序编写过程的迷茫,记录一篇从Hadoop2.4.0 HDFS系统中读取文件,并使用java语言编译运行的Wor...

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

原因就不解释了,总之是因为多线程并行往hdfs写造成的(因为每个DataFrame/RDD分成若干个Partition,这些partition可以被并行处理)。 其结果就是一个存下来的文件,其实是h...

spark parquet 从hdfs 上读 和写

import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apa...

spark DataFrame用法

最近用spark处理过一阵子日志,都是一些零零散散的临时需求,作为一个程序员,饱受查询之苦。在这个使用过程中,也渐渐对spark dataframe的使用摸索出了一些门道。 读写 与RDD的转...

Dataframe加载数据的4种方法

第一种:加载json数据 原始数据 {"name":"Michael"} {"name":"Andy", "age":30} {"name":"Justin&qu...

Dataframe保存模式

示例代码: val dataframe =  sqlContext.read.parquet("读取路径") dataframe.write.mode("overwrite").parquet("...
  • wk022
  • wk022
  • 2017-02-09 17:02
  • 1244

spark实现hive的合并输入很多小文件为指定大小的大文件的优化功能

源码地址:https://github.com/RetailRocket/SparkMultiTool 找到的先记下来,有空研究一下。

Hadoop2.x:HDFS存储小文件问题及其解决方法

HDFS设计的初衷是存储大文件,如果单个DataNode有12块2T的硬盘,则有存储空间24T,如果每个块100M,则可存储251658,如果每个块50M,则可存储503316. DataNode会向...

HDFS小文件问题及解决方案

1、  概述 小文件是指文件size小于HDFS上block大小的文件。这样的文件会给hadoop的扩展性和性能带来严重问题。首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)