如果您習慣使用命令列工具或者需要快速執行任務且不需要圖形介面,建議您使用MaxCompute用戶端訪問MaxCompute專案並執行命令。MaxCompute用戶端直接在您的本機電腦上運行,提供了一個簡單且高效的方式來執行命令和管理MaxCompute服務。本文為您介紹下載、安裝、配置和運行用戶端並提供用戶端相關使用說明資訊。
前提條件
在使用MaxCompute用戶端前,請您確認已滿足如下條件:
待安裝MaxCompute用戶端的裝置已安裝Java 8或以上版本。
已建立MaxCompute專案。
更多建立MaxCompute專案操作,請參見建立MaxCompute專案。
使用MaxCompute用戶端的RAM使用者已被添加至MaxCompute專案所屬的DataWorks工作空間。
更多添加工作空間成員操作,請參見授權給其他使用者。
使用限制
MaxCompute用戶端從v0.28.0版開始支援JDK 1.9,v0.28.0以下版本只支援JDK 1.8。您可以啟動MaxCompute用戶端後,在命令列介面查看用戶端版本號碼。更多啟動用戶端操作,請參見運行MaxCompute用戶端。
費用說明
使用MaxCompute用戶端串連專案不收費,但是通過用戶端執行的操作可能會觸發MaxComput計費。例如,當您使用用戶端提交一個SQL查詢和寫入命令,此SQL命令在MaxCompute上運行會消耗計算資源,同時寫入資料會佔用儲存空間,將產生計算費用和儲存費用。MaxCompute計費詳情請參見計費項目與計費方式概述。
注意事項
MaxCompute用戶端的輸出格式不承諾向前相容,不同版本間的用戶端命令格式及行為有差異,請勿依賴用戶端的輸出格式執行任何解析工作。更多用戶端版本,請參見aliyun-odps-console。
當您通過MaxCompute用戶端首次執行
tunnel download
命令時,MaxCompute用戶端會為您在當前裝置的用戶端安裝目錄plugins/dship
下建立一個session檔案夾,用於存放日誌。如果多名使用者共用同一裝置執行tunnel download
命令時,為確保資料安全,可以通過如下方式解決該問題:通過裝置自身的檔案夾許可權管理功能,管控session檔案夾許可權。
在
tunnel download
命令中添加-sd <新session檔案夾名稱>
或-session-dir <新session檔案夾名稱>
參數,將資料下載至其他session檔案夾。更多tunnel download
命令資訊,請參見Download。
MaxCompute用戶端的命令列使用兩個減號(--)作為注釋。
用戶端預設編碼為UTF-8,因此您需要注意您原生環境編碼。若本機環境編碼不是UTF-8,則當您通過用戶端查詢MaxCompute表資料傳回值有中文可能會出現亂碼或者您通過用戶端執行Tunnel命令上傳本機資料檔案到MaxCompute,也可能會出現中文亂碼。
安裝並配置MaxCompute用戶端
用戶端從v0.27.0版本開始支援MaxCompute 2.0新資料類型,推薦使用新資料類型。支援的資料類型列表,請參見2.0資料類型版本。
安裝並配置MaxCompute用戶端的操作流程如下:
- 說明
您可以通過上方連結進入用戶端發布介面,下載最新版本的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。
您可以進入AccessKey管理頁面擷取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用戶端可通過如下方式啟動,您可以任選其中一種:
方式一:安裝包的指令檔
在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;
下一步
登入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用戶端近期版本的更新說明如下,詳細資料請單擊對應版本連結擷取。
版本 | 變更類型 | 描述 |
新功能 |
| |
新功能 | ||
新功能 | ||
新功能 |
| |
缺陷修複 | 刪除Log4j依賴。 | |
新功能 | 支援專案按Schema儲存。更多資訊請參見Schema操作。 | |
新功能 | 支援複雜資料類型通過Tunnel上傳、下載。 | |
功能增強 |
| |
新功能 | 支援建立External Project串連DLF(Data Lake Formation),實現湖倉一體功能。 | |
缺陷修複 | 修複下載TIMESTAMP類型資料時,納秒(nano)部分處理不正確的問題。 |