Apache Sqoop效能調整

2021-10-25 13:45:19 字數 3090 閱讀 6612

sqoopapache基礎提供的一種工具,在大資料世界中通常用於異構關聯式資料庫 (rdbms) 和hadoop 分布式檔案系統 (hdfs)之間的匯入-匯出數百萬條記錄。這種資料傳輸可能導致不同的載入時間,從幾分鐘到幾個小時不等。此方案是全世界資料工程師在引擎蓋下檢視微調設定的情況。效能調整的目標是在更短的時間內載入更多資料,從而提高效率並減少網路超時時資料丟失的機會。

通常,sqoop 的效能調整可以通過:

控制並行性

控制資料傳輸過程

sqoop import  

--connect jdbc:mysql:

\--username sqoop \

--password sqoop \

--table cities \

按查詢拆分
sqoop import  

--connect jdbc:mysql:

\--username sqoop \

--password sqoop \

--table cities \

--split-by city_id

提高效能的乙個流行方法是管理我們匯入和匯出資料的方式。以下是幾種方法:

批處理

批處理意味著在匯出資料時,可以將相關的sql語句分組到批處理中。

jdbc 介面公開了乙個 api,用於在具有多個值集的準備語句中執行批處理。使用--batch引數,sqoop可以利用此優勢。此 api 存在於所有jdbc驅動程式中,因為它是 jdbc 介面所需的。

預設情況下,在sqoop中禁用批處理。使用--batch引數啟用 jdbc 批處理。

sqoop export

--connect jdbc:mysql:

\--username sqoop \

--password sqoop \

--table cities \

--export

-dir /data/cities \

--batch

提取大小

可以一次匯入的預設記錄數為1000。可以使用fetch大小引數覆蓋這一點,該引數用於指定sqoop一次可以使用以下語法匯入的記錄數:

sqoop import 

--connect jdbc:mysql:

\--username sqoop \

--password sqoop \

--table cities \

--fetch-size=n

其中n表示sqoop一次必須獲取的條目數。

根據可用記憶體和頻寬,可以增加提取大小引數的值,即需要讀取的資料量。

直接模式

預設情況下,sqoop匯入過程使用jdbc,它提供合理的跨**商匯入通道支援。但是,某些資料庫可以通過使用特定於資料庫的實用程式實現更高的效能,因為它們經過優化,可提供最佳的傳輸速度,同時減少資料庫伺服器的壓力。

通過提供--direct引數,sqoop被迫嘗試使用直接匯入通道。此通道的效能可能高於使用jdbc

sqoop import \   

--connect jdbc:mysql:

\--username sqoop \

--password sqoop \

--table cities \

--direct

此快速匯入具有多種限制。例如,並非所有資料庫都有可用的本機實用程式。此模式並非適用於每個受支援的資料庫。

sqoop僅對mysqlpostgresql直接提供支援。

自定義邊界查詢

如之前所見,通過拆分統一分布資料以進行匯入。如果列具有非均勻值,則如果單獨使用拆分引數時未獲得所需結果,則可以使用邊界查詢。

理想情況下,我們使用min(id) 和 max(id) 以及表名配置邊界查詢引數。

sqoop import \

--connect jdbc:mysql:

\--username sqoop \

--password sqoop \

--query 'select normcities.id, \

countries.country, \

normcities.city \

from normcities \

join countries using(country_id) \

where $conditions' \

--split-by id \

--target-dir cities \

--boundary-query "select min(id), max(id) from normcities"

此處由sqoop在內部使用,並將展開以選取城市表的最小 id 和最大 id 來拆分資料。通過使用自定義值,可以派生高效拆分資料,從而在一般方面提高效能。$conditions

效能調整的目標是在不損害資源的情況下實現顯著的效能。希望使用上述技術,我們應該能夠提高效率,並顯著縮短資料傳輸時間。

performance tuning apache sqoop. six definite ways to improve efficiency… | by thomas george thomas | the startup | medium

Apache Sqoop匯入 匯出

sqoop import driver com.mysql.jdbc.driver connect jdbc mysql centos 3306 test?characterencoding utf 8 username root password root table t user fields ...

效能調整策略

效能只是軟體整體質量的乙個方面,通常不是最重要的。精細的 調整也只是實現整體效能的一種方法,通常也不是決定性的。相對於 本身的效率而言,程式的架構 細節設計以及資料結構和演算法選擇對程式的執行速度和資源占用的影響通常會更大。定量測量時實現效能最優化的關鍵。定量測量需要找出真正決定程式效能的部分,在修...

ArcGIS Server效能調整

arcgis server效能調整 arcgis server產品的強大功能往往給了有些使用者帶來一定的認識誤區。有些使用者會認為可以把c s程式的使用模式和資料照搬到arcgis server的應用系統中.arcgis server的應用是b s的應用,軟體角度來講涉及到資料庫,web serve...