摘要:Sqoop-shell是一個Loader的shell工具,其所有功能都是通過執行指令碼“sqoop2-shell”來實現的。
本文分享自華為雲社群《FusionInsight SqoopShell使用案例》,作者:Jia裝大佬。
1 SqoopShell使用簡介
sqoop-shell是一個Loader的shell工具,其所有功能都是通過執行指令碼“sqoop2-shell”來實現的。
sqoop-shell工具提供瞭如下功能:
- 支援建立和更新聯結器
- 支援建立和更新作業
- 支援刪除聯結器和作業
- 支援以同步或非同步的方式啟動作業
- 支援停止作業
- 支援查詢作業狀態
- 支援查詢作業歷史執行記錄
- 支援複製聯結器和作業
- 支援建立和更新轉換步驟
- 支援指定行、列分隔符
sqoop-shell工具支援如下模式:
- 互動模式
通過執行不帶引數的“sqoop2-shell”指令碼,進入Loader特定的互動視窗,使用者輸入指令碼後,工具會返回相應資訊到互動視窗。
- 批量模式
通過執行“sqoop2-shell”指令碼,帶一個檔名作為引數,該檔案中按行儲存了多條命令,sqoop-shell工具將會按順序執行檔案中所有命令;或者在“sqoop2-shell”指令碼後面通過“-c”引數附加一條命令,一次只執行一條命令。
2 SqoopShell配置
2.1 配置Loader客戶端
1. 使用“PuTTY”工具,使用安裝客戶端的使用者登入客戶端所在節點。
2. 執行以下命令,防止超時退出。
TMOUT=0
3. 執行以下命令,進入Loader客戶端安裝目錄。例如,Loader客戶端安裝目錄為“/opt/hadoopclient/Loader”。
cd /opt/hadoopclient/Loader
4. 執行以下命令,配置環境變數。
source /opt/hadoopclient/bigdata_env
5. 執行以下命令解壓“loader-tools-1.99.3.tar”。
tar -xvf loader-tools-1.99.3.tar
解壓後的新檔案儲存在“loader-tools-1.99.3”目錄。
6. 執行以下命令修改工具授權配置檔案“login-info.xml”,並儲存退出。
vi loader-tools-1.99.3/loader-tool/job-config/login-info.xml
2.2 配置sqoopshell 配置檔案
- 使用“PuTTY”工具,使用安裝客戶端的使用者登入Loader客戶端所在節點。
- 執行以下命令,進入sqoop-shell工具的“conf”目錄。例如,Loader客戶端安裝目錄為“/opt/hadoopclient/Loader”。
cd /opt/hadoopclient/Loader/loader-tools-1.99.3/sqoop-shell/conf
- 執行以下命令,配置認證資訊。
vi client.properties
3 Sqoopshell使用示例
3.1 互動模式
1. 執行以下命令,進入互動模式(客戶端以/opt/hadoopclient為例)。
source /opt/hadoopclient/bigdata_env
cd /opt/hadoopclient/Loader/loader-tools-1.99.3/sqoop-shell
./sqoop2-shell
2. 獲取幫助資訊(\h獲取幫助資訊,\cr獲取create的幫助資訊,\up獲取更新的幫助資訊,以此類推)
3. 檢視聯結器
以此類推,可以檢視framework、job、connection等資訊
4. 建立聯結器
根據show connector資訊選擇對應的聯結器,根據create幫助資訊建立connection,然後根據命令列提示,輸入對應資訊,假如提示的引數無需設定,可按enter直接跳過
5. 建立作業
根據show connection出來的資訊選擇對應連結,根據create幫助資訊建立Job,然後根據命令列提示,輸入對應資訊,假如提示的引數無需設定,可按enter直接跳過
也可以使用—help檢視建立job的選項資訊
Json獲取方法
1) 登入loader原生頁面,建立一個相同型別的作業(如TaiPingTab)。
2) 匯出作業的配置json檔案,複製json檔案中,hops的內容(包括大括號),儲存為新的json檔案
3) 根據業務需要調整json檔案。
3.2 批量模式
批量模式有兩種方式,一種是./sqoop2-shell+指令碼的方式,指令碼中配置待執行的命令
另一種是./sqoop2-shell -c “待執行的命令”方式
獲取幫助:
./sqoop2-shell -c "create connection -cn generic-jdbc-connector --help"獲取建立connection的幫助資訊
./sqoop2-shell -c "create job -xn mysql -t import --help"檢視建立Job幫助資訊
1. 指令碼方式
cd /opt/hadoopclient/Loader/loader-tools-1.99.3/sqoop-shell
vi batchCommand.sh
更新作業
2. –c 方式(使用-c引數附帶一條命令,sqoop-shell可以一次只執行附帶的這一條命令)
建立連結為mysql名稱為TaiPingTab的匯入任務
./sqoop2-shell -c "create job -xn mysql -t import -name TaiPingTab --connector-table-schemaName keshangbank --connector-table-tableName Tab --connector-table-needPartition false --connector-table-columns id,name,value --framework-output-storageType HIVE --framework-output-outputDirectory /user/loader/Tab --framework-throttling-partitionHandlers 10 --framework-throttling-extractors 10 --trans /opt/client/Loader/loader-tools-1.99.3/loader-tool/job-config/TaiPing.json --queue root.default"
啟動:./sqoop2-shell -c "start job -n TaiPingTab -s"
刪除:./sqoop2-shell -c "delete job -n TaiPingTab"
更新:./sqoop2-shell -c 'update job -j 37 -name update-test --connector-table-sql "select * from keshangbank.update_test where time < "2020-2-2" and ${CONDITIONS}" '
注: 1. sqoop-shell目錄中createConnection createJob helpCmd startCmd中詳細描述了各個引數的含義
2. Json檔案的獲取及參考方式均一樣,批量模式中Json檔案的獲取跟方式請參考互動模式中json的獲取方式
3. 此文件中並未對引數詳細介紹,引數部分可參考產品文件sqoop-shell章節
4. 更新的引數和建立的引數保持一致
- 附件:SqoopShell使用案例.docx743.88KB
- 附件:Json.rar