MaxCompute本地用戶端(odpscmd)適用於命令列操作環境,可在本地直接運行,高效執行命令並管理專案。本文介紹其下載、安裝、配置、運行及基本使用方法。
適用範圍
待安裝MaxCompute用戶端的裝置已安裝Java 8或以上版本。
版本相容性
MaxCompute用戶端從v0.28.0版開始支援JDK 1.9,v0.28.0以下版本只支援JDK 1.8。啟動MaxCompute用戶端後,在命令列介面可查看用戶端版本號碼。
MaxCompute用戶端的輸出格式不承諾向前相容,不同版本間的用戶端命令格式及行為有差異,請勿依賴用戶端的輸出格式執行任何解析工作。
更多用戶端版本,請參見aliyun-odps-console。
編碼格式
用戶端預設編碼為UTF-8,若本機環境編碼不是UTF-8,通過用戶端查詢MaxCompute表資料傳回值有中文時可能會出現亂碼,或通過用戶端執行Tunnel命令上傳本機資料檔案到MaxCompute,也可能會出現中文亂碼。
費用說明
使用MaxCompute用戶端串連專案不收費,但是通過用戶端執行的操作可能會觸發MaxCompute計費。例如,使用用戶端提交一個SQL查詢和寫入命令,此SQL命令在MaxCompute上運行會消耗計算資源,同時寫入資料會佔用儲存空間,將產生計算費用和儲存費用。MaxCompute計費詳情請參見計費項目與計費方式。
安裝並配置MaxCompute用戶端
用戶端從v0.27.0版本開始支援MaxCompute 2.0新資料類型,推薦使用新資料類型。支援的資料類型列表,請參見2.0資料類型版本。
操作流程如下:
- 說明
通過上方連結進入用戶端發布介面,下載最新版本的MaxCompute用戶端安裝包(odpscmd_public.zip)。
如果上方連結無法下載,可以嘗試單擊此處的MaxCompute用戶端安裝包(OSS)下載。更多關於GitHub連結訪問失敗的問題,推薦在搜尋引擎中尋找相關解決方案。
解壓下載的安裝包檔案,得到bin、conf、lib和plugins檔案夾。
進入conf檔案夾,配置odps_config.ini檔案。
odps_config.ini檔案中使用井號(#)作為注釋。參數說明如下。
參數
是否必填
描述
樣本
project_name
是
訪問的目標MaxCompute專案名稱。
如果建立了標準模式的工作空間,在配置project_name時,請注意區分生產環境與開發環境(_dev)的專案名稱,請參見工作空間模式區別。
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇。
在项目管理頁面,可以擷取MaxCompute專案名稱。
doc_test_dev
access_id
是
阿里雲帳號或RAM使用者的AccessKey ID。可以進入AccessKey管理頁面擷取AccessKey ID。
無
access_key
是
AccessKey ID對應的AccessKey Secret。
無
end_point
是
MaxCompute服務的串連地址。
需要根據建立MaxCompute專案時選擇的地區以及網路連接方式配置Endpoint。各地區及網路對應的Endpoint值,請參見Endpoint。
重要Endpoint用於MaxCompute服務,Tunnel Endpoint用於MaxCompute的Tunnel服務,此處請填寫Endpoint。
如果Endpoint配置有誤,會出現無法訪問錯誤,請務必仔細確認。
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
否
Logview地址。推薦配置該參數,如果不配置該參數,在作業報錯時無法快速定位問題。
可以通過該地址查看作業的詳細運行資訊,並為報錯處理提供依據。固定取值為:http://logview.odps.aliyun.com。
http://logview.odps.aliyun.com
https_check
否
是否開啟HTTPS訪問機制,對訪問MaxCompute專案的請求進行加密。取值範圍如下:
True:採用HTTPS機制。
False:採用HTTP機制。
預設值為False。
True
data_size_confirm
否
輸入資料量的最大值,單位為GB。取值範圍無限制。推薦設定為100 GB。
100
update_url
否
預留參數,暫無需關注。
無
use_instance_tunnel
否
是否使用InstanceTunnel下載SQL執行結果。取值範圍如下:
True:使用InstanceTunnel下載SQL執行結果。
False:不使用InstanceTunnel下載SQL執行結果。
預設值為False。
True
instance_tunnel_max_record
否
用戶端返回的SQL執行結果的最大記錄數。如果use_instance_tunnel值為True,需要配置該參數。最大值為10000。
10000
tunnel_endpoint
否
Tunnel服務的外網訪問連結。
如果未配置Tunnel Endpoint,Tunnel會自動路由到MaxCompute服務所在網路對應的Tunnel Endpoint。
如果配置了Tunnel Endpoint,則以配置為準,不自動路由。
各地區及網路對應的Tunnel Endpoint值,請參見Endpoint。
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
否
設定MaxCompute專案的屬性。
更多屬性資訊,請參見屬性列表。
set.odps.sql.decimal.odps2=true
請確保上述資訊配置正確,若資訊配置錯誤,會導致專案串連失敗。
運行MaxCompute用戶端
若使用MaxCompute用戶端的使用者為RAM使用者,需要通過阿里雲主帳號將該RAM使用者添加至目標MaxCompute專案。更多添加工作空間成員操作,請參見授權給其他使用者。
啟動MaxCompute用戶端有如下兩種方式,任選其一即可:
方式一:安裝包的指令檔
在MaxCompute用戶端安裝路徑下的bin檔案夾中,雙擊
odpscmd.bat檔案(Windows系統)或者雙擊odpscmd檔案(macOS系統),即可啟動MaxCompute用戶端。返回如下資訊,表明已成功串連MaxCompute專案。
方式二:系統的命令列執行視窗
在系統的命令列執行視窗,進入MaxCompute用戶端安裝路徑下的bin目錄,執行
odpscmd命令(Windows系統)或sh odpscmd(Linux系統或Mac系統),即可啟動MaxCompute用戶端。返回如下資訊,表明已成功串連MaxCompute專案。說明在Ubuntu執行
sh odpscmd會提示報錯,請使用./odpscmd命令嘗試啟動。
如果通過系統的命令列視窗啟動MaxCompute用戶端,可以指定參數來執行命令,更多參數資訊,請參見啟動參數。
MaxCompute用戶端相關操作
擷取全部命令協助
可以通過如下方式快速擷取MaxCompute用戶端的命令協助,可以任選其中一種:
在MaxCompute用戶端查看命令協助資訊
查看全部命令的協助資訊。
odps@project_name>help; -- 等價於如下命令。 odps@project_name>h;通過指定關鍵字查看相關命令協助資訊。
例如擷取與表操作相關的命令協助。
odps@project_name>help table; -- 返回結果如下。 Usage: alter table <tablename> merge smallfiles Usage: export table <tablename> Usage: show tables [in <project_name>] [like '<prefix>'] list|ls tables [-p,-project <project_name>] Usage: describe|desc [<projectname>.]<tablename> [partition(<spec>)] Usage: read [<project_name>.]<table_name> [(<col_name>[,..])] [PARTITION (<partition_spec>)] [line_num]重要read命令屬於SQL文法,涉及收費詳細說明請參考SQL收費標準。
在系統的命令列執行視窗查看命令協助資訊
在系統的命令列執行視窗,切換到MaxCompute用戶端安裝路徑下的bin目錄,執行如下命令查看全部命令的協助資訊。在命令列執行視窗啟動MaxCompute用戶端時,允許指定一系列參數,參數資訊請參見啟動參數。
...\odpscmd\bin>odpscmd -h擷取當前登入使用者資訊
在運行MaxCompute用戶端後執行如下命令擷取當前登入使用者的資訊。
odps@project_name>whoami;返回結果說明如下。
Name:當前登入的帳號資訊。
Source IP:MaxCompute用戶端所在裝置的IP地址。
End_Point:MaxCompute服務的串連地址。
Project:MaxCompute專案的名稱。
Schema:MaxCompute專案下的Schema。
退出MaxCompute用戶端
執行如下命令退出運行中的MaxCompute用戶端。
odps@project_name>quit;
-- 等價於如下命令。
odps@project_name>q;執行tunnel download命令
通過MaxCompute用戶端首次執行
tunnel download命令時,MaxCompute用戶端會在當前裝置的用戶端安裝目錄plugins/dship下,建立一個用於存放日誌的session檔案夾。如果多名使用者共用同一裝置執行
tunnel download命令時,為確保資料安全,可以通過如下方式解決該問題:通過裝置自身的檔案夾許可權管理功能,管控session檔案夾許可權。
在
tunnel download命令中添加-sd <新session檔案夾名稱>或-session-dir <新session檔案夾名稱>參數,將資料下載至其他session檔案夾。更多tunnel download命令資訊,請參見Download。
相關文檔
登入MaxCompute用戶端後,即可在MaxCompute專案內執行SQL命令,請參見通過用戶端使用MaxCompute。
常見問題
配置完odps_config.ini檔案後啟動MaxCompute用戶端,常見報錯如下:
報錯:no java found
問題原因
運行MaxCompute用戶端的機器未安裝Java。
解決方案
在運行MaxCompute用戶端的機器安裝Java,並配置環境變數。MaxCompute用戶端從v0.28.0版本起開始支援JDK 1.9,之前版本只支援JDK 1.8。
報錯:找不到或無法載入主類 com.aliyun.openservices.odps.console.ODPSConsole
問題原因
可能下載了兩次用戶端安裝包,第二次的時候目錄被自動重新命名為
odpscmd_public (1),目錄名稱裡包含了空格等字元,導致路徑識別錯誤。解決方案
刪除目錄名稱中的空格等字元。
報錯:Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
問題原因
可能是odps_config.ini設定檔中的專案名稱填寫錯誤。
解決方案
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇。
在项目管理頁面,擷取已經建立的正確MaxCompute專案名稱後,修改odps_config.ini設定檔。
報錯:Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
問題原因
當前使用的AccessKey對應的阿里雲帳號或RAM使用者未添加到目標專案中或者專案名稱有誤。
解決方案
聯絡專案所有者將對應的阿里雲帳號或RAM使用者添加到目標專案中,操作詳情請參見添加阿里雲帳號使用者(專案層級)或添加RAM使用者(專案層級)。
報錯:Accessing project '<projectname>' failed: { "Code": "InvalidProjectTable", "Message": "The specified project or table name is not valid or missing."}或Accessing project '<projectname>' failed: connect timed out
問題原因
end_point參數值填寫錯誤。例如在本機電腦上使用MaxCompute用戶端串連專案,卻使用了阿里雲傳統網路串連方式下的Endpoint(外網環境使用了內網Endpoint)或填入了Tunnel Endpoint。解決方案
請參照Endpoint文檔,選擇與要串連專案所屬地區和網路環境相符的Endpoint。
Endpoint用於MaxCompute服務,Tunnel Endpoint用於MaxCompute的Tunnel服務,
end_point參數值應填寫Endpoint,請不要填入Tunnel Endpoint。
報錯:Accessing project '<projectname>' failed: <endpoint>
問題原因
end_point參數值填寫錯誤。例如將華東1(杭州)地區的外網Endpoint(http://service.cn-hangzhou.maxcompute.aliyun.com/api),輸入為http://service.ch-hangzhou.maxcompute.aliyun.com/api。解決方案
請參照Endpoint文檔,複製要串連專案所屬地區和網路環境相符的Endpoint,建議不要手動輸入。
啟動參數
在系統的命令列執行視窗,可以通過指定一系列參數快速執行命令,命令使用方法如下。
Usage: odpscmd [OPTION]...
where options include:
--help (-h)for help
--config=<config_file> specify another config file
--project=<prj_name> use project
--endpoint=<http://host:port> set endpoint
-k <n> will skip begining queries and start from specified position
-r <n> set retry times
-f <"file_path;"> execute command in file
-e <"command;[command;]..."> execute command, include sql command啟動參數說明如下。
命令 | 說明 | 命令樣本 |
| 擷取MaxCompute用戶端的全部命令協助資訊。 |
|
| 指定設定檔odps_config.ini的路徑。預設設定檔的路徑是 |
|
| 指定訪問的MaxCompute專案名稱。 |
|
| 指定串連MaxCompute服務的Endpoint資訊。更多Endpoint資訊,請參見Endpoint。 |
|
| 運行從指定位置開始的語句。當 | 忽略前兩條語句,直接從第三條語句開始執行。 |
| 設定作業運行失敗時的重試次數。 |
|
| 指定讀取的檔案。 |
|
| 指定執行的命令。 |
|
在Shell(或Windows命令列)執行視窗,使用者可能需要使用odpscmd -e <SQL語句>執行得到的動態傳回值,Shell的變數會擷取這個動態傳回值,然後在Shell中執行後續作業。此情境需要傳回值不包含運行資訊、表頭等額外資訊。為便於Shell調用,需要配置odps_config.ini檔案中的use_instance_tunnel參數值為false,關閉Instance Tunnel服務。然後執行set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "}; 命令,關閉表頭顯示。
例如表noheader中有一列三行資料,為1、2、3。執行如下命令,將計算結果重新導向到stdout到目標控制代碼,計算結果僅包含具體資料,不包含其他額外資訊:
--Windows命令列執行視窗運行命令如下。
...\odpscmd\bin>odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":"" ""};select * from noheader;" >D:\test.txt
--返回結果會儲存在D:\test.txt中。
--Shell執行視窗運行命令如下。
/Users/.../odpscmd/bin/odpscmd -e "set odps.sql.select.output.format={\"needHeader\":false,\"fieldDelim\":\"\"};select * from noheader;" >/Users/A/temp/test.txt
--返回結果會儲存在/Users/A/temp/test.txt中。
--返回結果如下。
1
2
3版本更新記錄
MaxCompute用戶端近期版本的更新說明如下,詳細資料請單擊對應版本連結擷取。
更多MaxCompute用戶端版本及相關功能更新說明,請參見GitHub。
版本 | 變更類型 | 描述 |
新功能 | 支援使用STS令牌作為臨時安全憑證。 | |
缺陷修複 | Apache Arrow庫版本更新,修複Arrow庫依賴的相容性問題。 | |
新功能 | 新增跳過進度配置選項。添加 | |
功能增強 |
| |
缺陷修複 | 升級依賴關係以清除CVE漏洞。 | |
新功能 | 增強外部卷建立加速:為外部卷下載添加加速選項。 | |
功能增強 | 重構 | |
新功能 |
| |
功能增強 |
| |
新功能 |
| |
新功能 |
| |
缺陷修複 | MCQA模式能夠更準確地識別fallback行為,避免重複展示logview。 | |
新功能 |
| |
功能增強 |
| |
新功能 | Tunnel 相關操作支援JSON資料類型。 | |
新功能 |
| |
功能增強 | 增強表描述儲存層資訊:擴充 | |
新功能 |
| |
新功能 |
| |
功能增強 |
| |
新功能 |
| |
缺陷修複 | 刪除Log4j依賴。 | |
新功能 | 支援專案按Schema儲存。更多資訊請參見Schema操作。 | |
新功能 | 支援複雜資料類型通過Tunnel上傳、下載。 | |
功能增強 |
| |
新功能 | 支援建立External Project串連DLF(Data Lake Formation),實現湖倉一體功能。 | |
缺陷修複 | 修複下載TIMESTAMP類型資料時,納秒(nano)部分處理不正確的問題。 |