使用本地客戶端(odpscmd)連接
如果您習(xí)慣使用命令行工具或者需要快速執(zhí)行任務(wù)且不需要圖形界面,建議您使用MaxCompute客戶端訪問MaxCompute項目并執(zhí)行命令。MaxCompute客戶端直接在您的本地計算機(jī)上運行,提供了一個簡單且高效的方式來執(zhí)行命令和管理MaxCompute服務(wù)。本文為您介紹下載、安裝、配置和運行客戶端并提供客戶端相關(guān)使用說明信息。
前提條件
在使用MaxCompute客戶端前,請您確認(rèn)已滿足如下條件:
待安裝MaxCompute客戶端的設(shè)備已安裝Java 8或以上版本。
已創(chuàng)建MaxCompute項目。
更多創(chuàng)建MaxCompute項目操作,請參見創(chuàng)建MaxCompute項目。
使用MaxCompute客戶端的RAM用戶已被添加至MaxCompute項目所屬的DataWorks工作空間。
更多添加工作空間成員操作,請參見授權(quán)給其他用戶。
使用限制
MaxCompute客戶端從v0.28.0版開始支持JDK 1.9,v0.28.0以下版本只支持JDK 1.8。您可以啟動MaxCompute客戶端后,在命令行界面查看客戶端版本號。更多啟動客戶端操作,請參見運行MaxCompute客戶端。
費用說明
使用MaxCompute客戶端連接項目不收費,但是通過客戶端執(zhí)行的操作可能會觸發(fā)MaxComput計費。例如,當(dāng)您使用客戶端提交一個SQL查詢和寫入命令,此SQL命令在MaxCompute上運行會消耗計算資源,同時寫入數(shù)據(jù)會占用存儲空間,將產(chǎn)生計算費用和存儲費用。MaxCompute計費詳情請參見計費項與計費方式概述。
注意事項
MaxCompute客戶端的輸出格式不承諾向前兼容,不同版本間的客戶端命令格式及行為有差異,請勿依賴客戶端的輸出格式執(zhí)行任何解析工作。更多客戶端版本,請參見aliyun-odps-console。
當(dāng)您通過MaxCompute客戶端首次執(zhí)行
tunnel download
命令時,MaxCompute客戶端會為您在當(dāng)前設(shè)備的客戶端安裝目錄plugins/dship
下創(chuàng)建一個session文件夾,用于存放日志。如果多名用戶共用同一設(shè)備執(zhí)行tunnel download
命令時,為確保數(shù)據(jù)安全,可以通過如下方式解決該問題:通過設(shè)備自身的文件夾權(quán)限管理功能,管控session文件夾權(quán)限。
在
tunnel download
命令中添加-sd <新session文件夾名稱>
或-session-dir <新session文件夾名稱>
參數(shù),將數(shù)據(jù)下載至其他session文件夾。更多tunnel download
命令信息,請參見Download。
MaxCompute客戶端的命令行使用兩個減號(--)作為注釋。
客戶端默認(rèn)編碼為UTF-8,因此您需要注意您本機(jī)的環(huán)境編碼。若本機(jī)環(huán)境編碼不是UTF-8,則當(dāng)您通過客戶端查詢MaxCompute表數(shù)據(jù)返回值有中文可能會出現(xiàn)亂碼或者您通過客戶端執(zhí)行Tunnel命令上傳本地數(shù)據(jù)文件到MaxCompute,也可能會出現(xiàn)中文亂碼。
安裝并配置MaxCompute客戶端
客戶端從v0.27.0版本開始支持MaxCompute 2.0新數(shù)據(jù)類型,推薦使用新數(shù)據(jù)類型。支持的數(shù)據(jù)類型列表,請參見2.0數(shù)據(jù)類型版本。
安裝并配置MaxCompute客戶端的操作流程如下:
- 說明
您可以通過上方鏈接進(jìn)入客戶端發(fā)布界面,下載最新版本的MaxCompute客戶端安裝包(odpscmd_public.zip)。
如果上方鏈接無法下載,您可以嘗試單擊此處的odpscmd_public_0.48.0進(jìn)行下載。更多關(guān)于Github鏈接訪問失敗的問題,推薦您直接在搜索引擎中查找相關(guān)解決方案。
解壓下載的安裝包文件,得到bin、conf、lib和plugins文件夾。
進(jìn)入conf文件夾,配置odps_config.ini文件。
odps_config.ini文件中使用井號(#)作為注釋。參數(shù)說明如下。
參數(shù)
是否必填
描述
示例
project_name
是
訪問的目標(biāo)MaxCompute項目名稱。
如果您創(chuàng)建了標(biāo)準(zhǔn)模式的工作空間,在配置project_name時,請注意區(qū)分生產(chǎn)環(huán)境與開發(fā)環(huán)境(_dev)的項目名稱,請參見必讀:簡單模式和標(biāo)準(zhǔn)模式的區(qū)別。
您可以登錄MaxCompute控制臺,在工作區(qū)> 項目管理頁面獲取MaxCompute項目名稱。
doc_test_dev
access_id
是
阿里云賬號或RAM用戶的AccessKey ID。
您可以進(jìn)入AccessKey管理頁面獲取AccessKey ID。
無
access_key
是
AccessKey ID對應(yīng)的AccessKey Secret。
您可以進(jìn)入AccessKey管理頁面獲取AccessKey Secret。
無
end_point
是
MaxCompute服務(wù)的連接地址。
您需要根據(jù)創(chuàng)建MaxCompute項目時選擇的地域以及網(wǎng)絡(luò)連接方式配置Endpoint。各地域及網(wǎng)絡(luò)對應(yīng)的Endpoint值,請參見Endpoint。
重要Endpoint用于MaxCompute服務(wù),Tunnel Endpoint用于MaxCompute的Tunnel服務(wù),此處請?zhí)顚慐ndpoint。
如果Endpoint配置有誤,會出現(xiàn)無法訪問錯誤,請務(wù)必仔細(xì)確認(rèn)。
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
否
Logview地址。您可以通過該地址查看作業(yè)的詳細(xì)運行信息,并為報錯處理提供依據(jù)。固定取值為:http://logview.odps.aliyun.com。
說明推薦您配置該參數(shù),如果不配置該參數(shù),在作業(yè)報錯時無法快速定位問題。
http://logview.odps.aliyun.com
https_check
否
是否開啟HTTPS訪問機(jī)制,對訪問MaxCompute項目的請求進(jìn)行加密。取值范圍如下:
True:采用HTTPS機(jī)制。
False:采用HTTP機(jī)制。
默認(rèn)值為False。
True
data_size_confirm
否
輸入數(shù)據(jù)量的最大值,單位為GB。取值范圍無限制。推薦設(shè)置為100 GB。
100
update_url
否
預(yù)留參數(shù),暫無需關(guān)注。
無
use_instance_tunnel
否
是否使用InstanceTunnel下載SQL執(zhí)行結(jié)果。取值范圍如下:
True:使用InstanceTunnel下載SQL執(zhí)行結(jié)果。
False:不使用InstanceTunnel下載SQL執(zhí)行結(jié)果。
默認(rèn)值為False。
True
instance_tunnel_max_record
否
客戶端返回的SQL執(zhí)行結(jié)果的最大記錄數(shù)。如果use_instance_tunnel值為True,需要配置該參數(shù)。最大值為10000。
10000
tunnel_endpoint
否
Tunnel服務(wù)的外網(wǎng)訪問鏈接。如果您未配置Tunnel Endpoint,Tunnel會自動路由到MaxCompute服務(wù)所在網(wǎng)絡(luò)對應(yīng)的Tunnel Endpoint。如果您配置了Tunnel Endpoint,則以配置為準(zhǔn),不進(jìn)行自動路由。
各地域及網(wǎng)絡(luò)對應(yīng)的Tunnel Endpoint值,請參見Endpoint。
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
否
設(shè)置MaxCompute項目的屬性。
更多屬性信息,請參見屬性列表。
set.odps.sql.decimal.odps2=true
說明請確保上述信息配置正確,若信息配置錯誤,會導(dǎo)致項目連接失敗。
運行MaxCompute客戶端
MaxCompute客戶端可通過如下方式啟動,您可以任選其中一種:
方式一:安裝包的腳本文件
在MaxCompute客戶端安裝路徑下的bin文件夾中,雙擊odpscmd.bat
文件(Windows系統(tǒng))或者雙擊odpscmd
文件(macOS系統(tǒng)),即可啟動MaxCompute客戶端。返回如下信息,表明已成功連接MaxCompute項目。
方式二:系統(tǒng)的命令行執(zhí)行窗口
在系統(tǒng)的命令行執(zhí)行窗口,進(jìn)入MaxCompute客戶端安裝路徑下的bin目錄,執(zhí)行odpscmd
命令(Windows系統(tǒng))或sh odpscmd
(Linux系統(tǒng)或Mac系統(tǒng)),即可啟動MaxCompute客戶端。返回如下信息,表明已成功連接MaxCompute項目。
在Ubuntu執(zhí)行sh odpscmd
會提示報錯,請您使用./odpscmd
命令嘗試啟動。
如果您通過系統(tǒng)的命令行窗口啟動MaxCompute客戶端,可以指定參數(shù)來執(zhí)行命令,更多參數(shù)信息,請參見參考:啟動參數(shù)。
MaxCompute客戶端相關(guān)操作
獲取全部命令幫助
您可以通過如下方式快速獲取MaxCompute客戶端的命令幫助,您可以任選其中一種:
在MaxCompute客戶端查看命令幫助信息
查看全部命令的幫助信息。
odps@project_name>help; --等價于如下命令。 odps@project_name>h;
通過指定關(guān)鍵字查看相關(guān)命令幫助信息。
例如獲取與表操作相關(guān)的命令幫助。
odps@project_name>help table; --返回結(jié)果如下。 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語法,涉及收費詳細(xì)說明請參考SQL收費標(biāo)準(zhǔn)。
在系統(tǒng)的命令行執(zhí)行窗口查看命令幫助信息
在系統(tǒng)的命令行執(zhí)行窗口,切換到MaxCompute客戶端安裝路徑下的bin目錄,執(zhí)行如下命令查看全部命令的幫助信息。在命令行執(zhí)行窗口啟動MaxCompute客戶端時,您可以指定一系列參數(shù),參數(shù)信息請參見參考:啟動參數(shù)。
...\odpscmd\bin>odpscmd -h
獲取當(dāng)前登錄用戶信息
您可以在運行MaxCompute客戶端后執(zhí)行如下命令獲取當(dāng)前登錄用戶的信息。
odps@project_name>whoami;
返回結(jié)果說明如下。
Name:當(dāng)前登錄的賬號信息。
Source IP:MaxCompute客戶端所在設(shè)備的IP地址。
End_Point:MaxCompute服務(wù)的連接地址。
Project:MaxCompute項目的名稱。
Schema:MaxCompute項目下的Schema。
退出MaxCompute客戶端
您可以在運行MaxCompute客戶端后執(zhí)行如下命令退出。
odps@project_name>quit;
--等價于如下命令。
odps@project_name>q;
下一步
登錄MaxCompute客戶端后,即可在MaxCompute項目內(nèi)執(zhí)行SQL命令,請參見通過客戶端使用MaxCompute。
MaxCompute客戶端支持的詳細(xì)命令語法信息,請參見常用命令列表或SQL命令及函數(shù)。
常見報錯
配置完odps_config.ini文件后啟動MaxCompute客戶端,常見報錯如下:
報錯:
no java found
。可能原因:
您運行MaxCompute客戶端的機(jī)器未安裝Java。
解決方法:
請您在運行MaxCompute客戶端的機(jī)器安裝Java,并配環(huán)境變量。
說明MaxCompute客戶端從v0.28.0版本起開始支持JDK 1.9,之前版本只支持JDK 1.8。
報錯:
找不到或無法加載主類 com.aliyun.openservices.odps.console.ODPSConsole
。可能原因:
您可能下載了兩次客戶端安裝包,第二次的時候目錄被自動重命名為
odpscmd_public (1)
,目錄名稱里包含了空格等字符,導(dǎo)致路徑識別錯誤。解決方法:
刪除目錄名稱中的空格等字符。
報錯:
Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
。可能原因:
odps_config.ini配置文件中的項目名稱填寫錯誤。
解決方法:
請您登錄MaxCompute控制臺,在工作區(qū)>項目管理頁面獲取已創(chuàng)建正確的MaxCompute項目名稱后,修改odps_config.ini配置文件。
報錯:
Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
。可能原因:
當(dāng)前使用的AccessKey對應(yīng)的阿里云賬號或RAM用戶未添加到目標(biāo)項目中。
解決方法:
需要您聯(lián)系項目所有者將對應(yīng)的阿里云賬號或RAM用戶添加到目標(biāo)項目中,操作詳情請參見添加阿里云賬號用戶(項目級別)或添加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
參數(shù)值填寫錯誤。例如您在本地計算機(jī)上使用MaxCompute客戶端連接項目,您卻使用了阿里云經(jīng)典網(wǎng)絡(luò)連接方式下的Endpoint(外網(wǎng)環(huán)境使用了內(nèi)網(wǎng)Endpoint)或填入了Tunnel Endpoint。解決方法:
請您參照Endpoint文檔,選擇與您要連接項目所屬區(qū)域和網(wǎng)絡(luò)環(huán)境相符的Endpoint。
說明Endpoint用于MaxCompute服務(wù),Tunnel Endpoint用于MaxCompute的Tunnel服務(wù),
end_point
參數(shù)值應(yīng)填寫Endpoint,請不要填入Tunnel Endpoint。
報錯:
Accessing project '<projectname>' failed: <endpoint>
。可能原因:
end_point
參數(shù)值填寫錯誤。例如您需要填寫華東1(杭州)地域的外網(wǎng)Endpoint(http://service.cn-hangzhou.maxcompute.aliyun.com/api
),您卻輸入為了http://service.ch-hangzhou.maxcompute.aliyun.com/api
。解決方法:
請您參照Endpoint文檔,復(fù)制您要連接項目所屬區(qū)域和網(wǎng)絡(luò)環(huán)境相符的Endpoint,建議不要手動輸入。
參考:啟動參數(shù)
在系統(tǒng)的命令行執(zhí)行窗口,您可以通過指定一系列參數(shù)快速執(zhí)行命令,命令使用方法如下。
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
啟動參數(shù)說明如下。
命令 | 說明 | 命令示例 |
| 獲取MaxCompute客戶端的全部命令幫助信息。 |
|
| 指定配置文件odps_config.ini的路徑。默認(rèn)配置文件的路徑是 |
|
| 指定訪問的MaxCompute項目名稱。 |
|
| 指定連接MaxCompute服務(wù)的Endpoint信息。更多Endpoint信息,請參見Endpoint。 |
|
| 運行從指定位置開始的語句。當(dāng) | 忽略前兩條語句,直接從第三條語句開始執(zhí)行。 |
| 設(shè)置作業(yè)運行失敗時的重試次數(shù)。 |
|
| 指定讀取的文件。 |
|
| 指定執(zhí)行的命令。 |
|
在Shell(或Windows命令行)執(zhí)行窗口,用戶可能需要使用odpscmd -e <SQL語句>
執(zhí)行得到的動態(tài)返回值,Shell的變量會獲取這個動態(tài)返回值,然后在Shell中執(zhí)行后續(xù)作業(yè)。此場景需要返回值不包含運行信息、表頭等額外信息。為便于Shell調(diào)用,您需要配置odps_config.ini文件中的use_instance_tunnel參數(shù)值為false,關(guān)閉Instance Tunnel服務(wù)。然后執(zhí)行set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "};
命令,關(guān)閉表頭顯示。
例如表noheader中有一列三行數(shù)據(jù),為1、2、3。執(zhí)行如下命令,將計算結(jié)果重定向stdout到目標(biāo)句柄,計算結(jié)果僅包含具體數(shù)據(jù),不包含其他額外信息:
--Windows命令行執(zhí)行窗口運行命令如下。
...\odpscmd\bin>odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":"" ""};select * from noheader;" >D:\test.txt
--返回結(jié)果會保存在D:\test.txt中。
--Shell執(zhí)行窗口運行命令如下。
/Users/.../odpscmd/bin/odpscmd -e "set odps.sql.select.output.format={\"needHeader\":false,\"fieldDelim\":\"\"};select * from noheader;" >/Users/A/temp/test.txt
--返回結(jié)果會保存在/Users/A/temp/test.txt中。
--返回結(jié)果如下。
1
2
3
參考:版本更新記錄
MaxCompute客戶端近期版本的更新說明如下,詳細(xì)信息請單擊對應(yīng)版本鏈接獲取。
版本 | 變更類型 | 描述 |
新功能 |
| |
新功能 | ||
新功能 | 支持MaxCompute JSON數(shù)據(jù)類型和MaxCompute TIMESTAMP_NTZ數(shù)據(jù)類型。 | |
新功能 |
| |
缺陷修復(fù) | 刪除Log4j依賴。 | |
新功能 | 支持項目按Schema存儲。更多信息請參見Schema操作。 | |
新功能 | 支持復(fù)雜數(shù)據(jù)類型通過Tunnel上傳、下載。 | |
功能增強(qiáng) |
| |
新功能 | 支持創(chuàng)建External Project連接DLF(Data Lake Formation),實現(xiàn)湖倉一體功能。更多湖倉一體信息,請參見MaxCompute湖倉一體概述。 | |
缺陷修復(fù) | 修復(fù)下載TIMESTAMP類型數(shù)據(jù)時,納秒(nano)部分處理不正確的問題。 |