教你如何使用FusionInsight SqoopShell
摘要: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