返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Spark SQL小文件问题处理
  • 281
分享到

Spark SQL小文件问题处理

摘要

目录1.1、小文件危害1.2、产生小文件过多的原因1.3、如何解决这种小文件的问题呢?1.3.1、调优参数1.1、小文件危害 大量的小文件会影响hadoop集群管理或者spark在处

1.1、小文件危害

大量的小文件会影响hadoop集群管理或者spark在处理数据时的稳定性:

  • 1.Spark sqlHive或者直接写入hdfs,过多的小文件会对Namenode内存管理等产生巨大的压力,会影响整个集群的稳定运行
  • 2.容易导致task数过多,如果超过参数spark.driver.maxResultSize的配置(默认1g),会抛出类似如下的异常,影响任务的处理
Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 478 tasks (2026.0 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)

当然可以通过调大spark.driver.maxResultSize的默认配置来解决问题,但如果不能从源头上解决小文件问题,以后还可能遇到类似的问题。此外,Spark在处理任务时,一个分区分配一个task进行处理,多个分区并行处理,虽然并行处理能够提高处理效率,但不是意味着task数越多越好。如果数据量不大,过多的task运行反而会影响效率。最后,Spark中一个task处理一个分区从而也会影响最终生成的文件数。

1.2、产生小文件过多的原因

1、流式处理中,每个批次的处理执行保存操作也会产生很多小文件
2、为了解决数据更新问题,同一份数据保存了不同的几个状态,也容易导致文件数过多

1.3、如何解决这种小文件的问题呢?

  1. 通过repartition或coalesce算子控制最后的DataSet的分区数, 注意repartition和coalesce的区别
  2. 将Hive风格的Coalesce and Repartition Hint 应用到Spark SQL 需要注意这种方式对Spark的版本有要求,建议在Spark2.4.X及以上版本使用,
示例:
INSERT ... SELECT  ...
INSERT ... SELECT  ...
  • 小文件定期合并可以定时通过异步的方式针对Hive分区表的每一个分区中的小文件进行合并操作

上述只是给出3种常见的解决办法,并且要结合实际用到的技术和场景去具体处理,比如对于HDFS小文件过多,也可以通过生成HAR 文件或者Sequence File来解决。

1.3.1、调优参数

在小文件场景下,您可以通过如下配置手动指定每个Task的数据量(Split Size),确保不会产生过多的Task,提高性能。

当SQL逻辑中不包含Shuffle操作时,设置此配置项,不会有明显的性能提升。

参数描述默认值
spark.sql.small.file.combine用于设置是否开启小文件优化
“true”表示开启。开启后,可以避免过多的小Task。
false
spark.sql.small.file.split.size合并小文件后,用于指定单个Task期望的数据量。
单位:Byte
256000000

set spark.default.parallelism = 400;

调整最后的task个数;

SELECT age, name FROM person DISTRIBUTE BY age;//按照某个字段重新分区重新分区。
对于使用动态分区的任务,使用distribute by。

insert overwrite table dm.dm_grw_retain_abtest_sd partition (year, month, day, retain_days)
select ……
distribute by retain_days -- 最终每个子分区一个文件
distribute by retain_days, cast(rand()*7 as int) -- 最终每个子分区7个文件

到此这篇关于Spark SQL小文件问题处理的文章就介绍到这了,更多相关SQL小文件问题处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spark SQL小文件问题处理

本文链接: https://lsjlt.com/news/204497.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spark SQL小文件问题处理
    目录1.1、小文件危害1.2、产生小文件过多的原因1.3、如何解决这种小文件的问题呢?1.3.1、调优参数1.1、小文件危害 大量的小文件会影响Hadoop集群管理或者Spark在处理数据时的稳定性: 1.Spark S...
    99+
    2023-04-07
    Spark SQL小文件问题处理 SQL小文件问题处理 Spark处理小文件
  • Spark SQL小文件问题处理
    目录1.1、小文件危害1.2、产生小文件过多的原因1.3、如何解决这种小文件的问题呢?1.3.1、调优参数1.1、小文件危害 大量的小文件会影响Hadoop集群管理或者Spark在处...
    99+
    2023-05-14
    Spark SQL小文件问题处理 SQL小文件问题处理 Spark处理小文件
  • Spark SQL小文件问题如何处理
    本篇内容主要讲解“Spark SQL小文件问题如何处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spark SQL小文件问题如何处理”吧!1.1、小文件危害大量的小文件会...
    99+
    2023-07-05
  • spark sql/hive小文件问题
    针对hive on mapreduce 1:我们可以通过一些配置项来使Hive在执行结束后对结果文件进行合并: 参数详细内容可参考官网:https://cwiki.apache.org/confluence/display/Hive/Con...
    99+
    2020-09-25
    spark sql/hive小文件问题 数据库入门 数据库基础教程 数据库 mysql
  • [离线计算-Spark|Hive] HDFS小文件处理
    本文主要介绍小文件的处理方法思路,以及通过阅读源码和相关资料学习hudi 如何在写入时智能的处理小文件问题新思路.Hudi利用spark 自定义分区的机制优化记录分配到不同文件的能力,达到小文件的合并处理...
    99+
    2021-05-27
    [离线计算-Spark|Hive] HDFS小文件处理
  • spark怎么处理大量日志文件
    Spark可以使用以下方法来处理大量日志文件: 使用Spark的文件输入源:Spark可以从HDFS、S3等分布式存储系统中读取...
    99+
    2024-04-02
  • 处理Oracle 监听文件listener.log问题
       如果连接时候变得较慢 查看Oracle日志记录,可能是因为此文件太大,超过2G, 需要定期清理,(如果多用户,记得用root,可能没权限) 查看listener.log? fi...
    99+
    2024-04-02
  • 1.sql数据处理问题
    1.查询出每门课都大于 80 分的学生姓名create table test2( id int not null auto_increment, ...
    99+
    2024-04-02
  • python处理大文件的内存问题
    摘要:同学们时常会遇到要处理大文件的情况,现在是大数据时代,有些文件动辄几十个G,我们在处理这样文件的时候一不小心就把内存撑爆了,或者程序被强制kill掉了。原因是你一次性把文件的所有内容都读取到内存里面了。python里面有方法可以一段一...
    99+
    2023-01-31
    大文件 内存 python
  • Django怎么处理文件上传问题
    在Django中处理文件上传问题通常涉及以下几个步骤: 在forms.py中定义一个表单类,用于接收文件上传的表单数据。 fro...
    99+
    2024-03-05
    Django
  • MySQL迁移文件的小问题
    线上有一台服务器上,里面有一个mysql数据库服务,其实库也很小,就几个G,一直以来是保留了多天的备份集,但是因为业务的关系,这个库其实只有一些基本的数据查询,但奇怪的是没有从库,一直以来是每天都会备份,保...
    99+
    2024-04-02
  • PHP中文文件名乱码问题处理技巧
    PHP中文文件名乱码问题处理技巧 在开发过程中,经常会遇到处理中文文件名乱码的问题,尤其是在处理用户上传的文件时。在PHP中,如何正确处理文件名乱码是一个比较常见且重要的问题。本文将介...
    99+
    2024-02-27
    php 乱码 文件名
  • 如何在Spark SQL中读取JSON文件
    如何在Spark SQL中读取JSON文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。val path ="/root/temp/people.js...
    99+
    2023-06-02
  • Python 文件操作的常见问题解答:破解文件处理难题
    ...
    99+
    2024-04-02
  • python的中文处理问题
    1.问题,包含中文的python脚步,运行时报这个错误SyntaxError: Non-ASCII character '\xe6' in file test_zh.py on line 6, but no encoding declare...
    99+
    2023-01-31
    中文 python
  • SparkStreaming如何解决小文件问题
    这期内容当中小编将会给大家带来有关SparkStreaming如何解决小文件问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用sparkstreaming时,如果实时计算结果要写入到HDFS,那么不可...
    99+
    2023-06-19
  • C#中获取文件大小问题
    目录C# 获取文件大小C# 获取文件占用空间 (绝对准确)首先说下文件大小与占用空间的区别计算思路获取文件的实际大小后续总结C# 获取文件大小 直接贴代码吧         /// ...
    99+
    2023-02-26
    C#获取文件大小 C#文件大小 C#获取文件
  • HDFS如何解决小文件问题
    小编给大家分享一下HDFS如何解决小文件问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.理解:我理解小文件为存储在块中的数据大小远小于块的存储容量的文件,这...
    99+
    2023-06-03
  • Spark SQL中出现CROSS JOIN 问题该怎么解决
    这篇文章将为大家详细讲解有关Spark SQL中出现CROSS JOIN 问题该怎么解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。问题显示如下所示:    ...
    99+
    2023-06-04
  • 如何在Python中处理文件读写的问题
    如何在Python中处理文件读写的问题,需要具体代码示例在Python中,文件读写是一个常见的操作任务。无论是处理文本文件还是二进制文件,Python提供了强大且灵活的文件读写功能。本文将介绍如何在Python中处理文件读写的问题,并给出具...
    99+
    2023-10-22
    文件读写 Python处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作