如何应对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)

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

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

Dataframe加载数据的4种方法

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

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

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

SparkSQL学习笔记(二)DataSource

简介: SparkSQL通过DataFrame接口支持处理各种数据源,df可以抽象为RDD或注册内存(临时)表处理,临时表可以通过SQL操作并返回一个结果df。 Load/Save 方法: 最简单...

sparksql减少输出数据中的小文件数量

由于项目中开发用到sparksql ,将一个大表的数据查询后插入到另一种表中,此时数据令也不是太大, 但是产生了200多个小文件,占用namenode资源,为了改善该情况使用, 将hive...

hive合并小文件

hadoop使用lzo压缩,block块大小为512MB 环境:hadoop2.6+hive1.2.1     lzo压缩 启动压缩 set hive.exec.comp...

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

在pyspark中,使用数据框的文件写出函数write.parquet经常会生成太多的小文件,例如申请了100个block,而每个block中的结果 只有几百K,这在机器学习算法的结果输出中经常出现...

Spark-SQL之DataFrame操作大全

Spark SQL中的DataFrame类似于一张关系型数据表。在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现。可以参考,Scala提供的DataFra...
  • dabokele
  • dabokele
  • 2016年10月12日 23:31
  • 36993

第45课 Spark 2.0实战之Dataset:map、flatMap、mapPartitions、dropDuplicate、coalesce、repartition等

第45课 Spark 2.0实战之Dataset:map、flatMap、mapPartitions、dropDuplicate、coalesce、repartition等   package c...

spark性能优化:数据倾斜调优

调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业...
  • LW_GHY
  • LW_GHY
  • 2016年05月15日 22:51
  • 19381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何应对SparkSQL DataFrame保存到hdfs时出现的过多小文件问题
举报原因:
原因补充:

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