自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spark SQL優(yōu)化策略

企業(yè)動(dòng)態(tài) Spark
查詢優(yōu)化是傳統(tǒng)數(shù)據(jù)庫(kù)中最為重要的一環(huán),這項(xiàng)技術(shù)在傳統(tǒng)數(shù)據(jù)庫(kù)中已經(jīng)很成熟。除了查詢優(yōu)化,Spark SQL在存儲(chǔ)上也進(jìn)行了優(yōu)化。下面介紹Spark SQL的一些優(yōu)化策略。

查詢優(yōu)化是傳統(tǒng)數(shù)據(jù)庫(kù)中最為重要的一環(huán),這項(xiàng)技術(shù)在傳統(tǒng)數(shù)據(jù)庫(kù)中已經(jīng)很成熟。除了查詢優(yōu)化,Spark SQL在存儲(chǔ)上也進(jìn)行了優(yōu)化。

下面介紹Spark SQL的一些優(yōu)化策略。

[[178956]]

(1)內(nèi)存列式存儲(chǔ)與內(nèi)存緩存表

Spark SQL可以通過(guò)cacheTable將數(shù)據(jù)存儲(chǔ)轉(zhuǎn)換為列式存儲(chǔ),同時(shí)將數(shù)據(jù)加載到內(nèi)存緩存。cacheTable相當(dāng)于在分布式集群的內(nèi)存物化視圖,將數(shù)據(jù)緩存,這樣迭代的或者交互式的查詢不用再?gòu)腍DFS讀數(shù)據(jù),直接從內(nèi)存讀取數(shù)據(jù)大大減少了I/O開(kāi)銷。列式存儲(chǔ)的優(yōu)勢(shì)在于Spark SQL只需要讀出用戶需要的列,而不需要像行存儲(chǔ)那樣每次都將所有列讀出,從而大大減少內(nèi)存緩存數(shù)據(jù)量,更高效地利用內(nèi)存數(shù)據(jù)緩存,同時(shí)減少網(wǎng)絡(luò)傳輸和I/O開(kāi)銷。數(shù)據(jù)按照列式存儲(chǔ),由于是數(shù)據(jù)類型相同的數(shù)據(jù)連續(xù)存儲(chǔ),所以能夠利用序列化和壓縮減少內(nèi)存空間的占用。

(2)列存儲(chǔ)壓縮

為了減少內(nèi)存和硬盤空間占用,Spark SQL采用了一些壓縮策略對(duì)內(nèi)存列存儲(chǔ)數(shù)據(jù)進(jìn)行壓縮。Spark SQL的壓縮方式要比Shark豐富很多,如它支持PassThrough、RunLengthEncoding、DictionaryEncoding、BooleanBitSet、IntDelta、LongDelta等多種壓縮方式,這樣能夠大幅度減少內(nèi)存空間占用、網(wǎng)絡(luò)傳輸和I/O開(kāi)銷。

(3)邏輯查詢優(yōu)化

SparkSQL在邏輯查詢優(yōu)化(見(jiàn)圖8-4)上支持列剪枝、謂詞下壓、屬性合并等邏輯查詢優(yōu)化方法。列剪枝為了減少讀取不必要的屬性列、減少數(shù)據(jù)傳輸和計(jì)算開(kāi)銷,在查詢優(yōu)化器進(jìn)行轉(zhuǎn)換的過(guò)程中會(huì)優(yōu)化列剪枝。

下面介紹一個(gè)邏輯優(yōu)化的例子。

SELECT Class FROM (SELECT ID,Name,Class FROM STUDENT ) S WHERE S.ID=1

Catalyst將原有查詢通過(guò)謂詞下壓,將選擇操作ID=1優(yōu)先執(zhí)行,這樣過(guò)濾大部分?jǐn)?shù)據(jù),通過(guò)屬性合并將***的投影只做一次,最終保留Class屬性列。

(4)Join優(yōu)化

Spark SQL深度借鑒傳統(tǒng)數(shù)據(jù)庫(kù)的查詢優(yōu)化技術(shù)的精髓,同時(shí)在分布式環(huán)境下調(diào)整和創(chuàng)新特定的優(yōu)化策略?,F(xiàn)在Spark SQL對(duì)Join進(jìn)行了優(yōu)化,支持多種連接算法,現(xiàn)在的連接算法已經(jīng)比Shark豐富,而且很多原來(lái)Shark的元素也逐步遷移過(guò)來(lái),如BroadcastHashJoin、BroadcastNestedLoopJoin、HashJoin、LeftSemiJoin,等等。

下面介紹其中的一個(gè)Join算法。

BroadcastHashJoin將小表轉(zhuǎn)化為廣播變量進(jìn)行廣播,這樣避免Shuffle開(kāi)銷,***在分區(qū)內(nèi)做Hash連接。這里使用的就是Hive中Map Side Join的思想,同時(shí)使用DBMS中的Hash連接算法做連接。 隨著Spark SQL的發(fā)展,未來(lái)會(huì)有更多的查詢優(yōu)化策略加入進(jìn)來(lái),同時(shí)后續(xù)Spark SQL會(huì)支持像Shark Server一樣的服務(wù)端和JDBC接口,兼容更多的持久化層,如NoSQL、傳統(tǒng)的DBMS等。一個(gè)強(qiáng)有力的結(jié)構(gòu)化大數(shù)據(jù)查詢引擎正在崛起。

【本文為51CTO專欄作者“王森豐”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)注明出處】

責(zé)任編輯:趙寧寧 來(lái)源: 神算子
相關(guān)推薦

2021-07-16 23:01:03

SQL索引性能

2021-07-26 18:23:23

SQL策略優(yōu)化

2023-05-10 10:30:02

性能優(yōu)化Tomcat

2023-03-30 09:06:20

HiveSpark大數(shù)據(jù)

2019-01-22 08:45:57

SQL語(yǔ)句策略

2025-02-18 08:10:00

SQL數(shù)據(jù)表數(shù)據(jù)庫(kù)

2016-12-14 19:20:07

Spark SQL架構(gòu)分布式

2009-09-08 09:45:23

App Engine性

2024-05-08 10:59:04

云計(jì)算AI優(yōu)化云策略

2025-01-15 08:05:06

MySQLLEFT JOIN數(shù)據(jù)庫(kù)

2021-03-29 23:12:51

機(jī)器學(xué)習(xí)人工智能游戲

2011-07-25 18:03:12

組策略

2016-12-08 15:47:54

sql優(yōu)化數(shù)據(jù)

2011-07-03 18:44:45

網(wǎng)站優(yōu)化

2017-03-01 20:53:56

HBase實(shí)踐

2025-01-15 12:48:30

2024-08-06 10:02:42

2023-05-26 18:52:55

2016-11-17 09:00:46

HBase優(yōu)化策略

2014-03-11 15:47:29

大型網(wǎng)站速度優(yōu)化運(yùn)維人員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)