当前位置:   article > 正文

sparksql 合并小文件参数_Spark SQL小文件问题在OPPO的解决方案

spark-sql 中 合并小文件参数

Spark SQL小文件是指文件大小显著小于hdfs block块大小的的文件。过于繁多的小文件会给HDFS带来很严重的性能瓶颈,对任务的稳定和集群的维护会带来极大的挑战。

一般来说,通过Hive调度的MR任务都可以简单设置如下几个小文件合并的参数来解决任务产生的小文件问题:

set hive.merge.mapfiles=true;set hive.merge.mapredfiles=true;set hive.merge.size.per.task=xxxx;set hive.merge.smallfiles.avgsize=xxx;

然而在我们将离线调度任务逐步从Hive迁移到Spark的过程中,由于Spark本身并不支持小文件合并功能,小文件问题日益突出,对集群稳定性造成很大影响,一度阻碍了我们的迁移工作。

为了解决小文件问题,我们经历了从开始的不断调整参数到后期的代码开发等不同阶段,这里给大家做一个简单的分享。

1. Spark为什么会产生小文件

Spark生成的文件数量直接取决于RDD里partition的数量和表分区数量。注意这里的两个分区概念并不相同,RDD的分区与任务并行度相关,而表分区则是Hive的分区数目。生成的文件数目一般是RDD分区数和表分区的乘积。因此,当任务并行度过高或者分区数目很大时,很容易产生很多的小文件。

d89a83932d0e4a576d7d1b9453d08682.png

图1:Spark

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/663016
推荐阅读
相关标签
  

闽ICP备14008679号