Spark寫入ES優化

2021-10-04 07:44:20 字數 1241 閱讀 9830

1.寫入demo,詳情看官網- elasticsearch for apache hadoop

給filesystem cache更多的記憶體

用bulk批量寫入

使用多執行緒將資料寫入es

增加refresh間隔

關閉wal事務日誌

其他優化案例:使用spark將hive的資料同步到es

常用優化策略

bulk批量寫入

sparksession spark = sparksession.

builder()

.config

("es.batch.size.entries"

,"5000"

)//設定批寫入的bulk數量,預設1000條

.config

("es.batch.size.bytes"

,"2.5mb"

)//設定批寫入的bulk大小(設定小於10mb),預設1mb;和上面引數協作,兩者誰先滿足,則觸發bulk write

.config

("es.batch.write.refresh"

,"false"

)//關閉批寫入後主動重新整理索引的操作,預設是true

.enablehivesupport()

.getorcreate()

;

使用多執行緒將資料寫入es

增加refresh間隔

//關閉refresh

settings settings = settings.

builder()

//refresh重新整理時間,預設1s;設定為-1表示關閉

.put

("index.refresh_interval"

,"-1").

build()

;//手動呼叫refresh

refreshrequest refreshrequest =

newrefreshrequest

(index)

; client.

indices()

.refresh

(refreshrequest, requestoptions.default)

;

其他的優化

es的寫入過程

建立 c reate elasticsearch集群中的每個節點都包含了改節點上分片的元資料資訊。協調節點 預設 使用文件id參與計算,以便為路由提供合適的分片。elasticsearch使用murmurhash3函式對文件id進行雜湊,其結果再對分片數量取模,得到的結果即是索引文件的分片。shar...

es 插入很慢 ES批量寫入很慢

cpu e5 8核 2.5g 硬碟 企業sata 記憶體 32g settings number of shards 1 number of replicas 0 refresh interval 60s translog sync interval 60s durability async flu...

spark效能優化

熟悉spark核心之後,深刻體會到了spark開發中存在著大量細節左右著計算效能。趁著剛看過大概的流程,先基於目前的感受和相關資料,總結一下可能存在優化空間的地方。spark優化其實就是將不必要的開銷能省就省。建立rdd是昂貴的,從磁碟讀取rdd也是昂貴的,需要大量的io開銷,shuffle是與基於...