sqoop
是apache
基礎提供的一種工具,在大資料世界中通常用於異構關聯式資料庫 (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
僅對mysql
和postgresql
直接提供支援。
自定義邊界查詢
如之前所見,通過拆分統一分布資料
以進行匯入。如果列具有非均勻值,則如果單獨使用拆分引數時未獲得所需結果,則可以使用邊界查詢。
理想情況下,我們使用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...