最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spark?SQL小文件問題處理

 更新時(shí)間:2023年04月07日 09:56:56   作者:寶哥大數(shù)據(jù)  
大量的小文件會影響Hadoop集群管理或者Spark在處理數(shù)據(jù)時(shí)的穩(wěn)定性,這篇文章主要介紹了Spark?SQL小文件問題的處理,感興趣的同學(xué)可以借鑒一下

1.1、小文件危害

大量的小文件會影響Hadoop集群管理或者Spark在處理數(shù)據(jù)時(shí)的穩(wěn)定性:

  • 1.Spark SQL寫Hive或者直接寫入HDFS,過多的小文件會對NameNode內(nèi)存管理等產(chǎn)生巨大的壓力,會影響整個(gè)集群的穩(wěn)定運(yùn)行
  • 2.容易導(dǎo)致task數(shù)過多,如果超過參數(shù)spark.driver.maxResultSize的配置(默認(rèn)1g),會拋出類似如下的異常,影響任務(wù)的處理
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)

當(dāng)然可以通過調(diào)大spark.driver.maxResultSize的默認(rèn)配置來解決問題,但如果不能從源頭上解決小文件問題,以后還可能遇到類似的問題。此外,Spark在處理任務(wù)時(shí),一個(gè)分區(qū)分配一個(gè)task進(jìn)行處理,多個(gè)分區(qū)并行處理,雖然并行處理能夠提高處理效率,但不是意味著task數(shù)越多越好。如果數(shù)據(jù)量不大,過多的task運(yùn)行反而會影響效率。最后,Spark中一個(gè)task處理一個(gè)分區(qū)從而也會影響最終生成的文件數(shù)。

1.2、產(chǎn)生小文件過多的原因

1、流式處理中,每個(gè)批次的處理執(zhí)行保存操作也會產(chǎn)生很多小文件
2、為了解決數(shù)據(jù)更新問題,同一份數(shù)據(jù)保存了不同的幾個(gè)狀態(tài),也容易導(dǎo)致文件數(shù)過多

1.3、如何解決這種小文件的問題呢?

  1. 通過repartition或coalesce算子控制最后的DataSet的分區(qū)數(shù), 注意repartition和coalesce的區(qū)別
  2. 將Hive風(fēng)格的Coalesce and Repartition Hint 應(yīng)用到Spark SQL 需要注意這種方式對Spark的版本有要求,建議在Spark2.4.X及以上版本使用,
示例:
INSERT ... SELECT /*+ COALESCE(numPartitions) */ ...
INSERT ... SELECT /*+ REPARTITION(numPartitions) */ ...
  • 小文件定期合并可以定時(shí)通過異步的方式針對Hive分區(qū)表的每一個(gè)分區(qū)中的小文件進(jìn)行合并操作

上述只是給出3種常見的解決辦法,并且要結(jié)合實(shí)際用到的技術(shù)和場景去具體處理,比如對于HDFS小文件過多,也可以通過生成HAR 文件或者Sequence File來解決。

1.3.1、調(diào)優(yōu)參數(shù)

在小文件場景下,您可以通過如下配置手動指定每個(gè)Task的數(shù)據(jù)量(Split Size),確保不會產(chǎn)生過多的Task,提高性能。

當(dāng)SQL邏輯中不包含Shuffle操作時(shí),設(shè)置此配置項(xiàng),不會有明顯的性能提升。

參數(shù)描述默認(rèn)值
spark.sql.small.file.combine用于設(shè)置是否開啟小文件優(yōu)化。
“true”表示開啟。開啟后,可以避免過多的小Task。
false
spark.sql.small.file.split.size合并小文件后,用于指定單個(gè)Task期望的數(shù)據(jù)量。
單位:Byte
256000000

set spark.default.parallelism = 400;

/*+ coalesce(40) */ 調(diào)整最后的task個(gè)數(shù);

SELECT age, name FROM person DISTRIBUTE BY age;//按照某個(gè)字段重新分區(qū)重新分區(qū)。
對于使用動態(tài)分區(qū)的任務(wù),使用distribute by。

insert overwrite table dm.dm_grw_retain_abtest_sd partition (year, month, day, retain_days)
select ……
distribute by retain_days -- 最終每個(gè)子分區(qū)一個(gè)文件
distribute by retain_days, cast(rand()*7 as int) -- 最終每個(gè)子分區(qū)7個(gè)文件

到此這篇關(guān)于Spark SQL小文件問題處理的文章就介紹到這了,更多相關(guān)SQL小文件問題處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 數(shù)據(jù)庫的三級模式和兩級映射介紹

    數(shù)據(jù)庫的三級模式和兩級映射介紹

    在這里大家一定要注意三級模式中的概念模式對應(yīng)的是數(shù)據(jù)庫設(shè)計(jì)的邏輯模型,而不是概念模型(E-R模型),一定不要弄混了
    2012-10-10
  • Mybatis查詢延遲加載詳解及實(shí)例

    Mybatis查詢延遲加載詳解及實(shí)例

    這篇文章主要介紹了Mybatis查詢延遲加載詳解及實(shí)例的相關(guān)資料,Mybatis的延遲加載默認(rèn)是關(guān)閉的,即默認(rèn)是一次就將所有的嵌套SQL一并查了將對象所有的信息都查詢出來。開啟延遲加載有兩種方式,需要的朋友可以參考下
    2017-01-01
  • SQL關(guān)系模型的知識梳理總結(jié)

    SQL關(guān)系模型的知識梳理總結(jié)

    這篇文章主要為大家介紹了SQL關(guān)系模型,文中對SQL關(guān)系模型的知識作了詳細(xì)的梳理總結(jié),有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • windows環(huán)境下python連接openGauss數(shù)據(jù)庫的全過程

    windows環(huán)境下python連接openGauss數(shù)據(jù)庫的全過程

    openGauss是一款全面友好開放,攜手伙伴共同打造的企業(yè)級開源關(guān)系型數(shù)據(jù)庫,這篇文章主要給大家介紹了關(guān)于windows環(huán)境下python連接openGauss數(shù)據(jù)庫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • DBeaver一款替代Navicat的數(shù)據(jù)庫可視化工具

    DBeaver一款替代Navicat的數(shù)據(jù)庫可視化工具

    這篇文章主要介紹了DBeaver一款替代Navicat的數(shù)據(jù)庫可視化工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MSSQL內(nèi)連接inner join查詢方法

    MSSQL內(nèi)連接inner join查詢方法

    sql內(nèi)連接查詢代碼,實(shí)例分析inner join實(shí)現(xiàn)方法
    2008-04-04
  • MySQL與Oracle 差異比較之七 其它

    MySQL與Oracle 差異比較之七 其它

    這篇文章主要介紹了MySQL與Oracle 差異比較之七 其它,需要的朋友可以參考下
    2017-04-04
  • 寫出高性能SQL語句的35條方法分析

    寫出高性能SQL語句的35條方法分析

    高性能的SQL語句能提高頁面的執(zhí)行效率,讓你的服務(wù)器運(yùn)行的更為流暢,所以大家在以后的使用過程中,盡量的考慮到效率。
    2009-10-10
  • DophinScheduler定期刪除日志實(shí)例代碼

    DophinScheduler定期刪除日志實(shí)例代碼

    Apache DophinScheduler 運(yùn)行一段時(shí)間后,實(shí)例調(diào)度日志越來越多,需要定期清理,這篇文章主要介紹了DophinScheduler定期刪除日志實(shí)例代碼,需要的朋友可以參考下
    2014-04-04
  • 高性能分析數(shù)據(jù)庫StarRocks的安裝與使用詳解

    高性能分析數(shù)據(jù)庫StarRocks的安裝與使用詳解

    在大數(shù)據(jù)時(shí)代,選擇一個(gè)高性能的分析數(shù)據(jù)庫對業(yè)務(wù)的成功至關(guān)重要,StarRocks作為一款次世代MPP數(shù)據(jù)庫,以其卓越的實(shí)時(shí)分析和多維分析能力而聞名,下面小編就來和大家聊聊它的具體安裝與使用吧
    2025-03-03

最新評論

南安市| 新津县| 蓬溪县| 阿鲁科尔沁旗| 淮安市| 临泉县| 肥东县| 洪洞县| 睢宁县| 建阳市| 射阳县| 武平县| 敦化市| 四川省| 四子王旗| 桦南县| 固原市| 蓝山县| 新源县| 东丰县| 湘阴县| 桓仁| 类乌齐县| 花莲县| 乐清市| 资兴市| 米林县| 长武县| 开封县| 连云港市| 夏邑县| 宜城市| 黔江区| 定襄县| 昆明市| 桃源县| 望谟县| 东乌珠穆沁旗| 曲周县| 漳州市| 临高县|