摘要: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