W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
對于某些工作負(fù)載,可以在通過在內(nèi)存中緩存數(shù)據(jù)或者打開一些實(shí)驗(yàn)選項(xiàng)來提高性能。
Spark SQL可以通過調(diào)用sqlContext.cacheTable("tableName")
方法來緩存使用柱狀格式的表。然后,Spark將會(huì)僅僅瀏覽需要的列并且自動(dòng)地壓縮數(shù)據(jù)以減少內(nèi)存的使用以及垃圾回收的壓力。你可以通過調(diào)用sqlContext.uncacheTable("tableName")
方法在內(nèi)存中刪除表。
注意,如果你調(diào)用schemaRDD.cache()
而不是sqlContext.cacheTable(...)
,表將不會(huì)用柱狀格式來緩存。在這種情況下,sqlContext.cacheTable(...)
是強(qiáng)烈推薦的用法。
可以在SQLContext上使用setConf方法或者在用SQL時(shí)運(yùn)行SET key=value
命令來配置內(nèi)存緩存。
Property Name | Default | Meaning |
---|---|---|
spark.sql.inMemoryColumnarStorage.compressed | true | 當(dāng)設(shè)置為true時(shí),Spark SQL將為基于數(shù)據(jù)統(tǒng)計(jì)信息的每列自動(dòng)選擇一個(gè)壓縮算法。 |
spark.sql.inMemoryColumnarStorage.batchSize | 10000 | 柱狀緩存的批數(shù)據(jù)大小。更大的批數(shù)據(jù)可以提高內(nèi)存的利用率以及壓縮效率,但有OOMs的風(fēng)險(xiǎn) |
以下的選項(xiàng)也可以用來調(diào)整查詢執(zhí)行的性能。有可能這些選項(xiàng)會(huì)在以后的版本中棄用,這是因?yàn)楦嗟膬?yōu)化會(huì)自動(dòng)執(zhí)行。
Property Name | Default | Meaning |
---|---|---|
spark.sql.autoBroadcastJoinThreshold | 10485760(10m) | 配置一個(gè)表的最大大小(byte)。當(dāng)執(zhí)行join操作時(shí),這個(gè)表將會(huì)廣播到所有的worker節(jié)點(diǎn)??梢詫⒅翟O(shè)置為-1來禁用廣播。注意,目前的統(tǒng)計(jì)數(shù)據(jù)只支持Hive Metastore表,命令ANALYZE TABLE <tableName> COMPUTE STATISTICS noscan 已經(jīng)在這個(gè)表中運(yùn)行。 |
spark.sql.codegen | false | 當(dāng)為true時(shí),特定查詢中的表達(dá)式求值的代碼將會(huì)在運(yùn)行時(shí)動(dòng)態(tài)生成。對于一些擁有復(fù)雜表達(dá)式的查詢,此選項(xiàng)可導(dǎo)致顯著速度提升。然而,對于簡單的查詢,這個(gè)選項(xiàng)會(huì)減慢查詢的執(zhí)行 |
spark.sql.shuffle.partitions | 200 | 配置join或者聚合操作shuffle數(shù)據(jù)時(shí)分區(qū)的數(shù)量 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: