sqoop作為乙個跨平台抽取和輸出資料的工具,在關係型資料庫(oralce,mysql等)和大資料平台之間常用。而目前的專案使用的hadoop平台,上游資料庫是oracle。
作為etl的一環,載入作業的效能也是需要關注和優化的。如果使用sqoop命令,則可以從以下幾點進行優化:
1.允許並行抽數:
-m n:這個引數代表的是允許n個mapreduce任務執行抽資料。對於大表,n>1是最好的,同時需要設定 -split by的字段和表示式(注,只能用單個欄位或表示式)。split by 的字段代表了按哪個欄位的值來劃分並行區間。
但是這樣有個隱患,就是當所選字段或表示式的值分布不均時候(有1條記錄值為a, 1000條記錄值為b),會造成資料傾斜且效能無提公升(hadoop中,乙個作業的所有mp任務完成後,這作業才會結束)。所以還需要對split 欄位或表示式的資料分布進行價差。看到很多篇說可以使用pk欄位,但是個人發現pk欄位的值也有分布不均的,其他非pk欄位也可以使用。例如乙個工廠的原料採購資料,可以使用採購年份進行並行,因為每年的採購資料量相差不大。
2. 在源資料中過濾不必要的記錄和字段: 可以在上游資料庫中建立物化檢視或者表,過濾掉不需要的記錄和字段,減少耗時。
3. 在上游資料庫增加快取:在並行抽數時,如果無資料傾斜發生,則需要檢查上游資料庫的快取空間的大小。增加快取,能夠減少sqoop命令的執行時長。
有錯必糾正,歡迎反饋!
模板抽題優化
經過測試,我對考評的模板抽題演算法做了相應的優化調整,優化後經過單元測試確認是可用的。在上篇部落格中,我只是寫出了相應的 片段,並做了相應的分析,在這個部落格中,我們首先來看一下模板抽題的整體實現。public exam model randomquestion exam model exam mo...
Sqoop(二) Sqoop匯入 匯出資料
1.2 rdbms hive 1.3 rdbms hbase 2.匯出資料 在sqoop中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用import關鍵字。sqoop import connect jdbc mysql top...
sqoop資料遷移
sqoop list databases connect jdbc mysql hadoop1 3306 username root password rootsqoop list tables connect jdbc mysql hadoop1 3306 test username root p...