sparksql如何調(diào)優(yōu)

這篇文章將為大家詳細(xì)講解有關(guān)sparksql如何調(diào)優(yōu),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):眉山服務(wù)器托管,成都服務(wù)器租用,眉山服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。

1,jvm調(diào)優(yōu)

這個(gè)是扯不斷,理還亂。建議能加內(nèi)存就加內(nèi)存,沒(méi)事調(diào)啥JVM,你都不了解JVM和你的任務(wù)數(shù)據(jù)。

spark調(diào)優(yōu)系列之內(nèi)存和GC調(diào)優(yōu)

2,內(nèi)存調(diào)優(yōu)

緩存表

spark2.+采用:

spark.catalog.cacheTable("tableName")緩存表,spark.catalog.uncacheTable("tableName")解除緩存。

spark 1.+采用:

采用 sqlContext.cacheTable("tableName")緩存,sqlContext.uncacheTable("tableName") 解除緩存

Sparksql僅僅會(huì)緩存必要的列,并且自動(dòng)調(diào)整壓縮算法來(lái)減少內(nèi)存和GC壓力。

屬性

默認(rèn)值

介紹

spark.sql.inMemoryColumnarStorage.compressed

true

假如設(shè)置為true,SparkSql會(huì)根據(jù)統(tǒng)計(jì)信息自動(dòng)的為每個(gè)列選擇壓縮方式進(jìn)行壓縮。

spark.sql.inMemoryColumnarStorage.batchSize

10000

控制列緩存的批量大小。批次大有助于改善內(nèi)存使用和壓縮,但是緩存數(shù)據(jù)會(huì)有OOM的風(fēng)險(xiǎn)

3,廣播

大小表進(jìn)行join時(shí),廣播小表到所有的Worker節(jié)點(diǎn),來(lái)提升性能是一個(gè)不錯(cuò)的選擇。Spark提供了兩個(gè)參數(shù)可以調(diào)整,不同版本會(huì)有些許不一樣,本文以Spark2.2.1為例講解。

屬性

默認(rèn)值

描述

spark.sql.broadcastTimeout

300

廣播等待超時(shí)時(shí)間,單位秒

spark.sql.autoBroadcastJoinThreshold

10485760 (10 MB)

最大廣播表的大小。設(shè)置為-1可以禁止該功能。當(dāng)前統(tǒng)計(jì)信息僅支持Hive Metastore表

廣播的變量的使用其實(shí),有時(shí)候沒(méi)啥用處。在任務(wù)超多,夸stage使用數(shù)據(jù)的時(shí)候才能凸顯其真正作用。任務(wù)一趟跑完了,其實(shí)廣播不廣播無(wú)所謂了。。。

4,分區(qū)數(shù)據(jù)的調(diào)控

分區(qū)設(shè)置spark.sql.shuffle.partitions,默認(rèn)是200.

對(duì)于有些公司來(lái)說(shuō),估計(jì)在用的時(shí)候會(huì)有Spark sql處理的數(shù)據(jù)比較少,然后資源也比較少,這時(shí)候這個(gè)shuffle分區(qū)數(shù)200就太大了,應(yīng)該適當(dāng)調(diào)小,來(lái)提升性能。

也有一些公司,估計(jì)在處理離線數(shù)據(jù),數(shù)據(jù)量特別大,而且資源足,這時(shí)候shuffle分區(qū)數(shù)200,明顯不夠了,要適當(dāng)調(diào)大。

適當(dāng),就完全靠經(jīng)驗(yàn)。

5,文件與分區(qū)

這個(gè)總共有兩個(gè)參數(shù)可以調(diào)整:

一個(gè)是在讀取文件的時(shí)候一個(gè)分區(qū)接受多少數(shù)據(jù);

另一個(gè)是文件打開(kāi)的開(kāi)銷(xiāo),通俗理解就是小文件合并的閾值。

文件打開(kāi)是有開(kāi)銷(xiāo)的,開(kāi)銷(xiāo)的衡量,Spark 采用了一個(gè)比較好的方式就是打開(kāi)文件的開(kāi)銷(xiāo)用,相同時(shí)間能掃描的數(shù)據(jù)的字節(jié)數(shù)來(lái)衡量。

參數(shù)介紹如下:

屬性名稱(chēng)

默認(rèn)值

介紹

spark.sql.files.maxPartitionBytes

134217728 (128 MB)

打包傳入一個(gè)分區(qū)的最大字節(jié),在讀取文件的時(shí)候。

spark.sql.files.openCostInBytes

4194304 (4 MB)

用相同時(shí)間內(nèi)可以掃描的數(shù)據(jù)的大小來(lái)衡量打開(kāi)一個(gè)文件的開(kāi)銷(xiāo)。當(dāng)將多個(gè)文件寫(xiě)入同一個(gè)分區(qū)的時(shí)候該參數(shù)有用。該值設(shè)置大一點(diǎn)有好處,有小文件的分區(qū)會(huì)比大文件分區(qū)處理速度更快(優(yōu)先調(diào)度)。

spark.sql.files.maxPartitionBytes該值的調(diào)整要結(jié)合你想要的并發(fā)度及內(nèi)存的大小來(lái)進(jìn)行。

spark.sql.files.openCostInBytes說(shuō)直白一些這個(gè)參數(shù)就是合并小文件的閾值,小于這個(gè)閾值的文件將會(huì)合并。

6,文件格式

建議parquet或者orc。Parquet已經(jīng)可以達(dá)到很大的性能了。

關(guān)于“sparksql如何調(diào)優(yōu)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

文章題目:sparksql如何調(diào)優(yōu)
當(dāng)前地址:http://www.muchs.cn/article20/phojjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站排名微信公眾號(hào)、網(wǎng)站導(dǎo)航、外貿(mào)建站、網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站