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