原因描述
用戶表6月3、8、9號 在覈心項目啓動前導入未就緒
導入明顯比平時長
3號出現超時是排查發現該表爲全量導入,當時聯繫業務開發添加增量字段索引,業務開發答覆10號左右上線新版本添加,9號添加了version索引,9號添加索引後將導入改爲增量導入,
這裏有個坑,以前正常情況下增量的字段id自增或者修改時間戳,但是version時段是一個bigint類型的時間戳並不是timestamp,使用lastmodify 方式無法增量,只能使用 append 方式,配置如圖
驗證配置無問題,但是導入耗時還是很久 83min。
優化分析
sqoop 導入底層用的是 jdbc 優化參考 fetch-size https://blog.csdn.net/bisal/article/details/82735614
添加 --fetch-size 10000 報錯
解決方案
在鏈接url加入
dontTrackOpenResources=true&defaultFetchSize=10000&useCursorFetch=true
參見
http://www.hadooptechs.com/sqoop/handling-database-fetch-size-in-sqoop
備註
使用 Arthas(阿爾薩斯) 排查發現,jdbc next 暫用 95% 的cpu ,
推薦好工具地址 https://alibaba.github.io/arthas/