国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

spark SQL 任務參數(shù)調優(yōu)1

這篇具有很好參考價值的文章主要介紹了spark SQL 任務參數(shù)調優(yōu)1。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.背景

要了解spark參數(shù)調優(yōu),首先需要清楚一部分背景資料Spark SQL的執(zhí)行原理,方便理解各種參數(shù)對任務的具體影響。spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark



一條SQL語句生成執(zhí)行引擎可識別的程序,解析(Parser)、優(yōu)化(Optimizer)、執(zhí)行(Execution) 三大過程。其中Spark SQL 解析和優(yōu)化如下圖

spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

  1. Parser模塊:未解析的邏輯計劃,將SparkSql字符串解析為一個抽象語法樹/AST。語法檢查,不涉及表名字段。

  2. Analyzer模塊:解析后的邏輯計劃,該模塊會遍歷整個AST,并對AST上的每個節(jié)點進行數(shù)據(jù)類型的綁定以及函數(shù)綁定,然后根據(jù)元數(shù)據(jù)信息Catalog對數(shù)據(jù)表中的字段和基本函數(shù)進行解析。

  3. Optimizer模塊:該模塊是Catalyst的核心,主要分為RBO和CBO兩種優(yōu)化策略,其中RBO是基于規(guī)則優(yōu)化(謂詞下推(Predicate Pushdown) 、常量累加(Constant Folding) 、列值裁剪(Column Pruning)),CBO是基于代價優(yōu)化。

  4. SparkPlanner模塊:優(yōu)化后的邏輯執(zhí)行計劃OptimizedLogicalPlan依然是邏輯的,并不能被Spark系統(tǒng)理解,此時需要將OptimizedLogicalPlan轉換成physical plan(物理計劃),如join算子BroadcastHashJoin、ShuffleHashJoin以及SortMergejoin 。

  5. CostModel模塊:主要根據(jù)過去的性能統(tǒng)計數(shù)據(jù),選擇最佳的物理執(zhí)行計劃。這個過程的優(yōu)化就是CBO(基于代價優(yōu)化)。

在實際Spark執(zhí)行完成一個數(shù)據(jù)生產(chǎn)任務(執(zhí)行一條SQL)的基本過程:

(1)對SQL進行語法分析,生成邏輯執(zhí)行計劃
(2)從Hive metastore server獲取表信息,結合邏輯執(zhí)行計劃生成并優(yōu)化物理執(zhí)行計劃
(3)根據(jù)物理執(zhí)行計劃向Yarn申請資源(executor),調度task到executor執(zhí)行。
(4)從HDFS讀取數(shù)據(jù),任務執(zhí)行,任務執(zhí)行結束后將數(shù)據(jù)寫回HDFS。

上述運行過程
過程 (2)主要是driver的處理能力
過程 (3)主要是executor 、driver的處理能力、作業(yè)運行行為

本文從作業(yè)的運行過程(2)(3)各選擇一個參數(shù)介紹從而了解運行過程。

目前的spark參數(shù)以及相關生態(tài)的參數(shù)列表幾百個:
Hadoop參數(shù):https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
hive參數(shù):Configuration Properties - Apache Hive - Apache Software Foundation
spark參數(shù):spark 配置參數(shù) Configuration - Spark 3.5.0 Documentation
? ? ? ? ? ? ? ? ? ? ?spark 優(yōu)化參數(shù) Performance Tuning - Spark 3.5.0 Documentation
? ? ? ? ? ? ? ? ? ? ?spark 執(zhí)行參數(shù) Spark SQL and DataFrames - Spark 2.0.0 Documentation

? ? ? ? ? ? ? ? ? ? ?各個公司自定義參數(shù):set spark.sql.insertRebalancePartitionsBeforeWrite.enabled = true

其他網(wǎng)上參考的參數(shù):Hive常用參數(shù)總結-CSDN博客

參數(shù)列表

參數(shù)類型

參數(shù)

設置值

描述

資源利用

spark.driver.memory
spark.driver.cores
spark.driver.memoryOverhead
spark.executor.memory

5g

--driver-memory 5G

每個exector的內存大小,后綴"k", "m", "g" or "t"

input split

spark.hadoop.hive.exec.orc.split.strategy

spark.hadoop.mapreduce.input.fileinputformat.split.maxsize;

spark.hadoop.mapreduce.input.fileinputformat.split.minsize;
spark.sql.files.maxPartitionBytes

BI 、ETL 、HYBRID

shuffle

spark.sql.shuffle.partitions

200

spark.default.parallelism

80, 100, 200, 300

join

1.spark.hadoop.hive.exec.orc.split.strategy 參數(shù)


? ? ? ? ? ? 1. 參數(shù)作用:參數(shù)控制在讀取ORC表時生成split的策略,影響任務執(zhí)行時driver壓力和mapper 數(shù)量。
? ? ? ? ? ? 2. 參數(shù)介紹 : 參數(shù)來源于hive ?:hive.exec.orc.split.strategy官方定義如下圖,當任務執(zhí)行開始時,ORC有三種分割文件的策略 BI 、ETL 、HYBRID(默認)
HYBRID模式:文件數(shù)過多和文件小的場景下,當文件數(shù)大于mapper count (總文件大小/hadoop默認分割大小128M) 且文件大小小于HDFS默認(128M)的大小。
ETL:生成分割文件之前首先讀取ORC文件的footer(存儲文件信息的文件),
BI: 直接分割文件,沒有訪問HDFS上的數(shù)據(jù)。spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

ORC文件的footer是什么?
? ORC 文件原理:全稱 Optimized Row Columnar?1.ORC是一個文件格式比較高效的讀取、寫入、處理hive數(shù)據(jù)。(我之前理解是一個高效壓縮文件)。2.序列化和壓縮: intger和String 序列化。按照文件塊增量的壓縮。
文件結構:三級結構:stripes 存在具體的數(shù)據(jù)行組(索引、數(shù)據(jù)行、stripe footer 的信息),file footer 文件的輔助信息(stripe的列表、每個stripe行數(shù)、列的數(shù)據(jù)類型、列上聚合信息 最大值最小值),psotscipt 文件的壓縮參數(shù)和壓縮后的大小。spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

? ? ? ?3.使用方法和場景: 因此ETL模式下讀取的file footer是每個orc文件塊的輔助信息。對于一些較大的ORC表,footer可能非常大,ETL模式下讀取大量hdfs的數(shù)據(jù)信息切分文件,導致driver的開銷壓力過大,這種情況適用BI模式比較合適。
? ? 一些配合使用參數(shù) 如:spark.hadoop.mapreduce.input.fileinputformat.split.maxsize;?spark.hadoop.mapreduce.input.fileinputformat.split.minsize; map輸入最小最大分割塊,maxsize 和minsize在輸入端控制ORC文件的分割合并。當spark 從hive表中讀取數(shù)據(jù)是會創(chuàng)建一個HadoopRDD的實例,HadoopRDD根據(jù)computeSplitSize方法分割文件(org.apache.hadoop.mapreduce.lib.input.FileInputFormat?)?Math.max(minSize, Math.min(maxSize, blockSize) 源代碼Source code,因此文件表的小文件過多3M大小,根據(jù)公式一個小文件就是一個split分割生成大量的patitions,導致tasks數(shù)量就巨大,整個任務性能瓶頸可能在讀取資源數(shù)據(jù)緩解。

文件分割源碼spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

? ?spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),sparkspark.sql.files.maxPartitionBytes ?單partition的最大字節(jié)數(shù), 為了防止把已經(jīng)設置好的分割塊再次合并,可以將 set spark.hadoopRDD.targetBytesInPartition=-1。

spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

2.spark.sql.shuffle.partitions


? ? 參數(shù)作用: 在任務有shuffle時候(join或者聚合場景下)控制partitions的數(shù)量。
? ? 參數(shù)介紹:

Property Name

Default

meaning

鏈接

翻譯

不同點

共同點

spark.sql.shuffle.partitions

200

Configures the number of partitions to use when shuffling data for joins or aggregations.

Spark SQL and DataFrames - Spark 2.0.0 Documentation

Spark SQL中shuffle過程中Partition的數(shù)量

僅適用于DataFrame ,group By, join 觸發(fā)數(shù)據(jù)shuffle,因此這些數(shù)據(jù)轉換后的結果會導致分區(qū)大小需要通過Spark.sql.shuffle.partitions 中設置的值。
如果任務沒有join 或者聚合操作,參數(shù)設置不會生效。

配置shuffle partitions 的數(shù)量

spark.default.parallelism

For distributed shuffle operations like?reduceByKeyand?join, the largest number of partitions in a parent RDD. For operations like?parallelizewith no parent RDDs, it depends on the cluster manager:

  • Local mode: number of cores on the local machine

  • Mesos fine grained mode: 8

  • Others: total number of cores on all executor nodes or 2, whichever is larger

Default number of partitions in RDDs returned by transformations like?join,?reduceByKey, and?parallelize?when not set by user.

Configuration - Spark 3.5.0 Documentation

1.reduceByKey
指定分區(qū)數(shù) ?val rdd2 = rdd1.reduceByKey(?_ + _, 10)
不指定分區(qū)數(shù)val rdd1 = rdd2.reduceByKey(_ + _?)
2.join?
val rdd3 = rdd1.join(rdd2),rdd3里Partition的數(shù)量由父rdd中最多的Partition數(shù)量決定,因此使用join算子時,應增加父rdd中的Partition數(shù)量。

1.若當前RDD執(zhí)行shuffle操算子如reducebykey 和join ,則為在父RDD中最大的partition數(shù)。
2.若當前RDD沒有上一個RDD則集群管理器分配
? 2.1 本地模式:機器核數(shù)
? 2.2?Mesos上 8
? 2.3 所有executor的核數(shù)或者是2的最大值

spark.default.parallelism 是隨 RDD 引入的,當用戶未設置時候,返回reduceByKey(), groupByKey(), join() 轉換的默認分區(qū)數(shù),僅適用于RDD。

參數(shù)用法:在提交作業(yè)的通過 --conf 來修改這兩個設置的值,方法如下:或者
? ? ? ? ?spark-submit --conf spark.sql.shuffle.partitions=300?--conf spark.default.parallelism=300
? ? ? ? ? ? ? ? ? ? ?sqlContext.setConf("spark.sql.shuffle.partitions", "300")
? ? ? ? ? ? ? ? ? ? ?sqlContext.setConf("spark.default.parallelism", "300”)

參數(shù)介紹2.0:chatGPT3.5 的答案spark SQL 任務參數(shù)調優(yōu)1,大數(shù)據(jù),大數(shù)據(jù),spark

? ? ?理解spark的并行度:

  1. ?資源的并行 ?exector數(shù)和cpu core數(shù)

  2. ?數(shù)據(jù)的并行 ?spark作業(yè)在各個stage的task 的數(shù)量是并行執(zhí)行,task數(shù)量設置成Spark Application總CPU core數(shù)量的2~3倍,同時盡量提升Spark運行效率和速度;

? ??
? ? ?擴展: flink 的并行度

參考文檔:
1.Spark SQL底層執(zhí)行流程詳解(好文收藏)-騰訊云開發(fā)者社區(qū)-騰訊云? spark 執(zhí)行原理
2.ORC 參數(shù):Configuration Properties - Apache Hive - Apache Software Foundation
3.ORC文件定義:?LanguageManual ORC - Apache Hive - Apache Software Foundation
4.oRC解讀:?深入理解ORC文件結構-CSDN博客
5.hadoop input:?How does Spark SQL decide the number of partitions it will use when loading data from a Hive table? - Stack Overflow
6.文件分割:從源碼看Spark讀取Hive表數(shù)據(jù)小文件和分塊的問題 - 掘金,?How does Spark SQL decide the number of partitions it will use when loading data from a Hive table? - Stack Overflow
7.spark手冊:How to Set Apache Spark Executor Memory - Spark By {Examples}
8.并行:?performance - What is the difference between spark.sql.shuffle.partitions and spark.default.parallelism? - Stack Overflow
9.flink的并行 :?并行執(zhí)行 | Apache Flink
10.reducebykey :scala - reduceByKey: How does it work internally? - Stack Overflow
11.key values :?4. Working with Key/Value Pairs - Learning Spark [Book]
12.spark并行:? ??Spark調優(yōu)之 -- Spark的并行度深入理解(別再讓資源浪費了)_spark并行度-CSDN博客
13.場景:??spark SQL 任務參數(shù)調優(yōu)1文章來源地址http://www.zghlxwxcb.cn/news/detail-729748.html

到了這里,關于spark SQL 任務參數(shù)調優(yōu)1的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spark on Yarn 最佳運行參數(shù)調優(yōu)-計算方式_spark on yarn 調優(yōu) nodemanager

    Spark on Yarn 最佳運行參數(shù)調優(yōu)-計算方式_spark on yarn 調優(yōu) nodemanager

    先自我介紹一下,小編浙江大學畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前! 因此收集整理了一份《2024年最新軟件測試全套學習資料》

    2024年04月26日
    瀏覽(24)
  • Spark SQL調優(yōu)實戰(zhàn)

    Spark SQL調優(yōu)實戰(zhàn)

    1、 新添參數(shù)說明 // D river 和Executor內存和CPU資源相關配置 -- 是否開啟 executor 動態(tài)分配 , 開啟時 spark.executor.instances 不生效 spark.dynamicAllocation.enabled= false --配置Driver內存 spark.dirver.memory=5g --driver最大結果大小,設置為0代表不限制,driver在拉取結果時,如果結果超過閾值會報異

    2024年02月21日
    瀏覽(18)
  • spark sql 的join調優(yōu)

    spark sql中join操作是最耗費性能的操作,因為這涉及到數(shù)據(jù)的shuffle操作,如果由此導致數(shù)據(jù)傾斜更是會雪上加霜,那么如何優(yōu)化join操作的性能呢? 方式一 broadcast廣播: 如果是大表和小表的join操作,最簡單的解決方式就是對小表進行broadcast操作,把小表的數(shù)據(jù)廣播到各個ex

    2024年02月21日
    瀏覽(22)
  • Spark 提交任務參數(shù)設置關于(線程,shuffle,序列化)

    是在使用 Apache Spark 時,為了設置 Java 虛擬機(JVM)的堆棧大小而使用命令行選項。 -Xss 是 Java 虛擬機的一個選項,用于設置線程的堆棧大小。在這個命令行選項中, -Xss6m 表示將線程的堆棧大小設為 6MB。這個選項的作用是為了避免在運行 Spark 任務時出現(xiàn)堆棧溢出的錯誤。

    2024年02月02日
    瀏覽(15)
  • spark 數(shù)據(jù)序列化和內存調優(yōu)(翻譯)

    由于大多數(shù)Spark計算的內存性質,Spark程序可能會被集群中的任何資源瓶頸:CPU、網(wǎng)絡帶寬或內存。大多數(shù)情況下,如果數(shù)據(jù)能放在內存,瓶頸是網(wǎng)絡帶寬,但有時,您還需要進行一些調整,例如以序列化形式存儲RDD,以減少內存使用。本指南將涵蓋兩個主要主題:數(shù)據(jù)序列化

    2024年03月11日
    瀏覽(23)
  • openGauss學習筆記-224 openGauss性能調優(yōu)-系統(tǒng)調優(yōu)-數(shù)據(jù)庫系統(tǒng)參數(shù)調優(yōu)-數(shù)據(jù)庫并發(fā)隊列參數(shù)調優(yōu)

    openGauss學習筆記-224 openGauss性能調優(yōu)-系統(tǒng)調優(yōu)-數(shù)據(jù)庫系統(tǒng)參數(shù)調優(yōu)-數(shù)據(jù)庫并發(fā)隊列參數(shù)調優(yōu)

    數(shù)據(jù)庫提供兩種手段進行并發(fā)隊列的控制,全局并發(fā)隊列和局部并發(fā)隊列。 224.1 全局并發(fā)隊列 全局并發(fā)隊列采用GUC參數(shù)max_active_statements控制數(shù)據(jù)庫主節(jié)點上運行并發(fā)執(zhí)行的作業(yè)數(shù)量。采用全局并發(fā)隊列機制將控制所有普通用戶的執(zhí)行作業(yè),不區(qū)分復雜度,即執(zhí)行語句都將作

    2024年02月22日
    瀏覽(29)
  • spark 的group by ,join數(shù)據(jù)傾斜調優(yōu)

    spark任務中最常見的耗時原因就是數(shù)據(jù)分布不均勻,從而導致有些task運行時間很長,長尾效應導致的整個job運行耗時很長 首先我們要定位數(shù)據(jù)傾斜,我們可以通過在spark ui界面中查看某個stage下的task的耗時,如果發(fā)現(xiàn)某些task耗時很長,對應要處理的數(shù)據(jù)很多,證明有數(shù)據(jù)傾斜

    2024年02月21日
    瀏覽(24)
  • Spark通過jdbc性能調優(yōu)--采用分區(qū)的方式從oracle讀數(shù)據(jù)

    spark通過jdbc讀取Oracle,當數(shù)據(jù)量很大的時候會出現(xiàn)兩個問題: 讀取數(shù)據(jù)異常緩慢,甚至卡死 大表中進行操作也會出現(xiàn)OOM的問題 調優(yōu) 常規(guī)的讀取數(shù)據(jù)庫的方式如下 常規(guī)jdbc讀取表的時候只有一個分區(qū)在執(zhí)行,也就是只有一個excutor在工作,沒有把spark并行操作的特性發(fā)揮出來

    2023年04月14日
    瀏覽(19)
  • hql、數(shù)據(jù)倉庫、sql調優(yōu)、hive sql、python

    hql、數(shù)據(jù)倉庫、sql調優(yōu)、hive sql、python

    HQL(Hibernate Query Language) 是面向對象的查詢語言 SQL的操作對象是數(shù)據(jù)列、表等數(shù)據(jù)庫數(shù)據(jù) ; 而HQL操作的是類、實例、屬性 數(shù)據(jù)倉庫的定義 英文名稱為Data Warehouse,可簡寫為DW或DWH。 為企業(yè)級別的決策制定過程,提供所有類型數(shù)據(jù)支持的戰(zhàn)略集合。 它出于分析性報告和決策支持

    2024年02月03日
    瀏覽(28)
  • Spark大數(shù)據(jù)處理講課筆記3.7 Spark任務調度

    Spark大數(shù)據(jù)處理講課筆記3.7 Spark任務調度

    理解DAG概念 了解Stage劃分 了解RDD在Spark中的運行流程 DAG(Directed Acyclic Graph) 叫做 有向無環(huán)圖 ,Spark中的RDD通過一系列的轉換算子操作和行動算子操作形成了一個DAG。DAG是一種非常重要的圖論數(shù)據(jù)結構。如果一個有向圖無法從任意頂點出發(fā)經(jīng)過若干條邊回到該點,則這個圖就

    2024年02月09日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包