如何应对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)
其结果就是一个存下来的文件,其实是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时出现的过多小文件问题
- Spark:将RDD[List[String,List[Person]]]中的List[Person]通过spark api保存为hdfs文件时一直出现not serializable task,没办法找到"spark自定义Kryo序列化输入输出API"
- [问题]如何直接在网页中打开文件 不出现下载保存提示框!
- spark:学习过程中遇到的一些问题及解决方法(如何将本地文件发布到HDFS)--11
- 如何避免spark dataframe的JOIN操作之后产生重复列(Reference '***' is ambiguous问题解决)
- Spark保存到HDFS或本地文件相关问题
- 如何不打开文件 直接出现下载保存提示框
- 如何将MySQL数据库sql查询结果保存到excel文件中
- sql修改表结构,出现问题,不允许保存修改
- MYSQL数据库导入SQL文件出现乱码如何解决
- Linux 底下 文件过多导致 ls 命令出现 arguments too long 的问题
- 如何不打开文件 直接出现下载保存提示框
- 对于重装SQL 2000出现的某些挂起文件问题解决方法
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 如何删除/var/spool/clientmqueue下文件过多的问题
- MYSQL数据库导入SQL文件出现乱码如何解决
- 讲一下SqlDataReader的关闭问题,出现"阅读器关闭时尝试调用 FieldCount 无效"
- 如何解决用"adobe pdf"打印Djvu文件出现横线或横条的问题
- 如何处理Oledb中EXCEL驱动读取EXCEL文件中字段长度大于255字符时出现的"数据截断"问题.
- .NET2003安裝出现一直重启问题和SQL 2000安装出现“以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。”~[解决方案]