溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MaxCompute中odpscmd如何使用

發(fā)布時(shí)間:2021-07-27 16:01:49 來源:億速云 閱讀:192 作者:Leah 欄目:云計(jì)算

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)MaxCompute中odpscmd如何使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。



一、命令行工具odpscmd在MaxCompute生態(tài)中的定位
odpscmd其實(shí)就是MaxCompute的命令行工具的名稱,其在整個(gè)MaxCompute中的位置是位于最上端的。如下圖所示,整個(gè)MaxCompute生態(tài)自下而上是支撐的關(guān)系,而真正暴露給用戶的是一套Rest API,這套API也是最核心的接口,無論是Java還是Python的SDK都需要調(diào)用這些核心API。而命令行工具就是對于MaxCompute開放的Rest API做了深度的包裝,在客戶端使得用戶可以使用命令的方式來提交作業(yè),這些作業(yè)又將會通過接口提交給MaxCompute集群進(jìn)行相關(guān)的管理和開發(fā)。可能大家對于MaxCompute以及DataWorks這個(gè)組合比較熟悉,這是因?yàn)槭褂肕axCompute之前需要在DataWorks上面進(jìn)行開通。實(shí)際上,MaxCompute自身也有一些生態(tài)工具,比如odpscmd以及MaxCompute Studio等。

MaxCompute中odpscmd如何使用cdn.com/b03edb54aee0bb5188a4fa4d570fbd0e85b11b28.png">

二、快速開始:一個(gè)完整簡單的小例子
在本部分中,將通過一個(gè)簡單而完整的例子對使用odpscmd客戶端進(jìn)行數(shù)據(jù)處理的各個(gè)階段進(jìn)行介紹。在文中僅對于各個(gè)步驟進(jìn)行簡略描述,具體的實(shí)踐操作詳見視頻分享。

MaxCompute中odpscmd如何使用

作為MaxCompute的客戶端工具,odpscmd與Hive CLI以及PSQL這樣客戶端工具是比較類似的,都是一個(gè)黑屏的操作管理工具。接下來為大家分享一個(gè)完整而簡單的小例子,這個(gè)例子能夠完整地覆蓋大數(shù)據(jù)處理的各個(gè)環(huán)節(jié),包括了環(huán)境準(zhǔn)備、數(shù)據(jù)接入、數(shù)據(jù)處理加工以及數(shù)據(jù)消費(fèi)。在大家常見的大數(shù)據(jù)場景中,業(yè)務(wù)數(shù)據(jù)往往分散在數(shù)據(jù)庫以及其他的生產(chǎn)環(huán)境中,而定期會進(jìn)行數(shù)據(jù)采集或者同步,將生產(chǎn)環(huán)境中的增量數(shù)據(jù)同步到數(shù)據(jù)倉庫中去,這樣就會涉及到數(shù)據(jù)接入。之后在數(shù)據(jù)倉庫中就會周期性地做一些數(shù)據(jù)處理加工,這些加工有時(shí)候會用常見的SQL做,對于MySQL而言提供了MR這樣的編程框架,而一些具有深度需求的用戶則會通過UDF來實(shí)現(xiàn)一些比較復(fù)雜的業(yè)務(wù)邏輯,同時(shí)在數(shù)據(jù)加工的時(shí)候會需要監(jiān)控作業(yè)的執(zhí)行情況,所以也會有對于進(jìn)度以及成功狀態(tài)等的作業(yè)查看和管理的需求。作業(yè)處理完畢之后,這時(shí)候基本上完成了數(shù)據(jù)的清洗和聚合,這時(shí)候就可以提供給數(shù)據(jù)消費(fèi)方使用。對于數(shù)據(jù)使用消費(fèi)方而言,往往需要將加工好的可消費(fèi)數(shù)據(jù)回流到業(yè)務(wù)系統(tǒng)來支撐在線應(yīng)用,或者通過JDBC接口連接BI工具進(jìn)行可視化分析,而業(yè)務(wù)分析師也往往希望下載一些數(shù)據(jù)進(jìn)行二次加工和處理。

1.下載與配置安裝
對于odpscmd而言,大家可以在官方網(wǎng)站上找到其下載地址,通過瀏覽器下載到本地的是一個(gè)ZIP包,解壓之后就可以看到odpscmd一些相關(guān)目錄。而對于Linux用戶而言,也可以通過yarn源去下載并安裝相應(yīng)的包。下載完成之后,需要修改odps_config.ini配置文件,如下圖藍(lán)框中所示,需要錄入項(xiàng)目名稱,填寫登錄訪問者所擁有的access_id和access_key等認(rèn)證信息。同時(shí),這里需要注意MaxCompute在國內(nèi)的Region里面的end_point域名是一致的;而對于tunnel_endpoint而言,則是和Region密切相關(guān)的,所以對于不同的Region而言,所填寫的tunnel_endpoint是不同的。在填寫完配置文件之后就可以啟動odpscmd客戶端了。

MaxCompute中odpscmd如何使用

2.數(shù)據(jù)環(huán)境準(zhǔn)備
對于使用odpscmd客戶端的同學(xué)而言,往往會深度地使用shell以及一些開源的工具進(jìn)行配合。這里舉個(gè)例子,在業(yè)務(wù)數(shù)據(jù)庫中有一張日常的業(yè)務(wù)表,可能存儲了日常業(yè)務(wù)點(diǎn)擊的日志以及新增的訂單數(shù)據(jù),那么常見場景是需要將數(shù)據(jù)同步到數(shù)據(jù)倉庫,這個(gè)過程需要一些數(shù)據(jù)同步工具周期性地將數(shù)據(jù)加載到數(shù)據(jù)倉庫的表里面,而且往往會需要建立相應(yīng)的分區(qū)表,將相應(yīng)的數(shù)據(jù)放入到相應(yīng)的分區(qū)里面去。這一個(gè)任務(wù)可以通過開源工具DataX完成,實(shí)現(xiàn)將數(shù)據(jù)同步地插入到數(shù)據(jù)倉庫表里面去。而當(dāng)手工配置DataX命令時(shí),有一些像分區(qū)字段這樣的參數(shù)往往是動態(tài)的,所以也需要動態(tài)地放入到DataX腳本的參數(shù)當(dāng)中。

MaxCompute中odpscmd如何使用

3.數(shù)據(jù)加工處理
當(dāng)數(shù)據(jù)同步完成之后,在很多的場景中需要對一些分區(qū)表做加工處理,如下圖所示的例子中是新建一張表或者insert OVERWRITE一張表,還會對于數(shù)據(jù)表中由于增量同步而引入的新的分區(qū)數(shù)據(jù)進(jìn)行匯總聚合計(jì)算,并將結(jié)果生成到新表中。而當(dāng)作業(yè)非常長的時(shí)候,odpscmd工具也提供了作業(yè)監(jiān)控命令“Show p”,就能夠檢索出全量歷史作業(yè)。而每個(gè)作業(yè)都會有自己的instance_id,而對于MaxCompute而言,最基本的任務(wù)單元就是instance,每個(gè)instance就是提交作業(yè)的實(shí)例。根據(jù)instance_id在事后還可以檢索到其對應(yīng)的Logview??傊?,odpscmd本身就提供了完整的作業(yè)提交、作業(yè)事后查看以及對于指定作業(yè)詳情的查看能力。在本次分享的例子中,使用的是Tunnel對于MaxCompute的結(jié)果數(shù)據(jù)集進(jìn)行下載,并通過Excel或者其他的工具進(jìn)行分析,因此執(zhí)行tunnel download就能夠?qū)⒔Y(jié)果數(shù)據(jù)表下載到本地文件中。

MaxCompute中odpscmd如何使用

三、客戶端提供的能力框架
上述的內(nèi)容其實(shí)是希望通過一個(gè)簡單的例子將日常較為復(fù)雜的大數(shù)據(jù)處理流程和環(huán)節(jié)進(jìn)行簡單回溯,借此希望向大家傳達(dá)MaxCompute客戶端工具能夠支持日常工作的各個(gè)環(huán)節(jié)。那么,MaxCompute客戶端工具究竟有什么樣的功能能夠支撐各個(gè)環(huán)節(jié)的需要呢?其實(shí),odpscmd的功能包含了對于項(xiàng)目空間的管理,對表、視圖以及操作分區(qū)的操作管理,對資源、函數(shù)的管理,對作業(yè)實(shí)例的管理,并且提供數(shù)據(jù)上傳下載的數(shù)據(jù)通道,同時(shí)也提供安全與權(quán)限管理等其他的操作。接下來就為大家依次介紹。

MaxCompute中odpscmd如何使用

項(xiàng)目空間相關(guān)操作
在連接項(xiàng)目之前首先已經(jīng)創(chuàng)建了一個(gè)MaxCompute項(xiàng)目,在使用項(xiàng)目的時(shí)候可以使用類似于Hive數(shù)據(jù)庫一樣“use <project_name>;”這樣的命令去跨空間切換,通過這種方式可以使得用戶在多個(gè)項(xiàng)目之間進(jìn)行快速切換,當(dāng)使用了“use <project_name>;”之后,后續(xù)的所有命令將會直接應(yīng)用到制定的項(xiàng)目中。

MaxCompute中odpscmd如何使用

表相關(guān)操作
表相關(guān)操作的命令在odpscmd客戶端工具上能夠很輕松地進(jìn)行操作,其包含了表的創(chuàng)建和刪除以及對于表的修改,比如修改列名、修改分區(qū)、修改屬主Owner、非分區(qū)數(shù)據(jù)的刪除等。其他的操作諸如show tables也都兼容了Hive的使用習(xí)慣。在下圖中為大家列出了與表相關(guān)的操作命令以及幫助文檔。

MaxCompute中odpscmd如何使用

視圖及分區(qū)相關(guān)操作
對于視圖和分區(qū)而言,odpscmd也可以通過view方式把一些復(fù)雜的處理邏輯進(jìn)行二次封裝,更容易地對外進(jìn)行暴露。對于view而言,提供了創(chuàng)建、修改、刪除以及查看的操作。對于Partition而言,大家關(guān)注的也比較多,常見的就是如何查看表的分區(qū),通過show partition <表名>的方式就能夠列出這張表里面有多少個(gè)分區(qū),同時(shí)分區(qū)的名稱是什么。同時(shí)可以借助alter <表名>的方式將某一個(gè)分區(qū)刪除掉或者修改其命名。

MaxCompute中odpscmd如何使用

資源與函數(shù)相關(guān)操作
深度用戶在使用時(shí)就會發(fā)現(xiàn),很多內(nèi)置函數(shù)不能夠滿足自身邏輯需求,往往會需要使用一些UDF來進(jìn)行復(fù)雜計(jì)算,也可以通過MR來做更自由的計(jì)算邏輯,這些時(shí)候用戶需要上傳一個(gè)自定義開發(fā)包,這些對于MaxCompute而言就是資源Resource。通過odpscmd可以上傳也可以查看項(xiàng)目中的資源。對于函數(shù)而言,用戶創(chuàng)建UDF的時(shí)候,就可以使用create方式很容易地進(jìn)行創(chuàng)建。

MaxCompute中odpscmd如何使用

實(shí)例相關(guān)操作
對于實(shí)例而言,大家可能會在客戶端運(yùn)行很多作業(yè),可能在某個(gè)時(shí)間想要看看作業(yè)是否已經(jīng)運(yùn)行完成了,但是又記不住作業(yè)的具體ID是什么,這時(shí)候就可以使用show p和show instance命令來列出提交過的歷史作業(yè),并且還支持按照時(shí)間等條件進(jìn)行過濾。當(dāng)instance列表獲取之后,對特定的任務(wù)做操作還可以使用“wait”命令查看其詳情。

MaxCompute中odpscmd如何使用

Tunnel相關(guān)操作
有一種操作命令實(shí)際上是提交給控制、管理、數(shù)據(jù)查詢作業(yè)的命令,并且還有一部分是做數(shù)據(jù)的上下行,這有別于前面提到的任務(wù)提交,更多的是對于數(shù)據(jù)的吞吐量要求比較高,因此odpscmd集成了Tunnel工具,能夠在命令行里面進(jìn)行數(shù)據(jù)上傳以及下載等。這里經(jīng)常會遇到的問題就是很多開發(fā)者在自己的生產(chǎn)環(huán)境里面通過Tunnel做數(shù)據(jù)同步,而這時(shí)候?qū)τ跀帱c(diǎn)續(xù)傳的能力要求就會比較高了。

MaxCompute中odpscmd如何使用

安全及權(quán)限相關(guān)操作
很多用戶對于DataWorks比較熟悉,DataWorks里面有比較簡單明了的用戶角色授權(quán)管理的能力。而做數(shù)據(jù)庫的一些同學(xué)則更加習(xí)慣于黑屏的方式,也就是通過命令方式做安全和權(quán)限的管理。

MaxCompute中odpscmd如何使用

角色相關(guān)權(quán)限管理
比如對于角色相關(guān)權(quán)限的管理,可以通過create role可以在大數(shù)據(jù)項(xiàng)目中創(chuàng)建角色,并對角色賦權(quán),將某一個(gè)用戶加入到角色當(dāng)中去,或者移除相關(guān)的角色。同時(shí)也能夠查看究竟有哪些角色。

MaxCompute中odpscmd如何使用

用戶相關(guān)權(quán)限管理
對于用戶相關(guān)權(quán)限管理而言,最常見就是將一個(gè)阿里云的賬號加進(jìn)項(xiàng)目中去,并為用戶指定具體的角色,并獲取對應(yīng)的權(quán)限。

MaxCompute中odpscmd如何使用

項(xiàng)目空間的數(shù)據(jù)保護(hù)
一些管理員對于項(xiàng)目空間的保護(hù)要求比較高,而在MaxCompute當(dāng)中天然對于多租戶支持方面做了很多工作。比如可以設(shè)置禁止項(xiàng)目數(shù)據(jù)被下載,僅允許幾個(gè)授信的項(xiàng)目之間共享數(shù)據(jù),這樣就可以將與項(xiàng)目空間相關(guān)的權(quán)限保護(hù)能力都放在odpscmd中。

MaxCompute中odpscmd如何使用

權(quán)限查看
同時(shí),odpscmd也給出了權(quán)限查看相關(guān)的命令。

MaxCompute中odpscmd如何使用

其他操作
odpscmd還提供一些其他常用的操作。大家可能經(jīng)常會遇到一些性能優(yōu)化的場景,比如對于一張比較大的數(shù)據(jù)表做掃描分區(qū)的切分,這樣可以增加作業(yè)任務(wù)的并行度,這些優(yōu)化手段的開關(guān)都可以通過命令行進(jìn)行快速設(shè)置,同時(shí)也可以對于一些SQL進(jìn)行成本預(yù)估,并且也可以輕松地獲取幫助信息。綜上所述,odpscmd是一個(gè)比較強(qiáng)大并且完整的客戶端工具。

MaxCompute中odpscmd如何使用

四、客戶端重點(diǎn)場景說明
接下來重點(diǎn)分享幾個(gè)客戶端使用的重點(diǎn)場景。
場景1:通過shell腳本調(diào)用tunnel命令進(jìn)行文件上下傳
在這種場景下,默認(rèn)會通過分隔符的方式進(jìn)行上傳。而當(dāng)用戶遇到了一些非標(biāo)準(zhǔn)化的分隔符時(shí),通過-fd方式就能夠快速適配對應(yīng)的列分隔符。而很多同學(xué)也希望通過shell腳本的方式能夠動態(tài)地進(jìn)行調(diào)度,這里也會涉及到動態(tài)參數(shù)傳入的問題。如下圖中示例所示,可以將日期動態(tài)地傳入到Tunnel命令當(dāng)中去,周期性地將新增的日志文件上傳或者下載到對應(yīng)的目錄中去。

MaxCompute中odpscmd如何使用

場景2:調(diào)試odpscmd命令
在非交互式的場景下,MaxCompute命令支持-f參數(shù),可在腳本或其它程序中直接以odps -f <文件路徑>的方式支持MaxCompute命令。此外MaxCompute命令還支持-e參數(shù),在這種方式下需要通過括號的方式將SQL命令嵌入進(jìn)去。

MaxCompute中odpscmd如何使用

場景3:運(yùn)行數(shù)據(jù)查詢/數(shù)據(jù)加工作業(yè)UDF
在odpscmd里面能夠原生地支持UDF和MR,如下圖所示的是UDF作業(yè)的使用流程。

MaxCompute中odpscmd如何使用

在前兩個(gè)環(huán)節(jié)需要在線下將寫好的UDF編寫好的程序打成Jar包,在命令行當(dāng)中通過“add jar”的方式把其傳入到指定的項(xiàng)目中作為一個(gè)資源。而通過createfunction命令可以命名一個(gè)自定義函數(shù)并于上傳的主函數(shù)進(jìn)行關(guān)聯(lián),這樣就真正地建立了這樣的一個(gè)函數(shù)。之后在測試或者使用的時(shí)候通過調(diào)用剛才創(chuàng)建的UDF進(jìn)行使用。這樣就是通過odpscmd實(shí)現(xiàn)UDF的完整創(chuàng)建。

場景4:運(yùn)行數(shù)據(jù)查詢/數(shù)據(jù)加工作業(yè)MR
對于MR作業(yè)而言,首先需要在編譯環(huán)境中編寫并打包MR程序,打包完成之后將其作為一個(gè)資源注冊到項(xiàng)目之中,在odpscmd里面執(zhí)行“add jar”,之后在命令行里面運(yùn)行MR作業(yè),之后就可以獲得相應(yīng)的結(jié)果。

MaxCompute中odpscmd如何使用

五、容易碰到的問題
接下來為大家總結(jié)了幾個(gè)常見的問題。首先是動態(tài)參數(shù)的傳入,因?yàn)閛dpscmd是一種命令行的方式,那么大家通過shell調(diào)用的比較多,這時(shí)候就涉及到如何將一些動態(tài)的參數(shù)調(diào)入進(jìn)去,其實(shí)可以通過shell的方式變相地將一些動態(tài)信息傳遞進(jìn)來。還有一個(gè)常見的問題就是“手工執(zhí)行odpscmd命令正常,通過shell腳本調(diào)用時(shí)報(bào)錯”,此時(shí)就需要檢查shell腳本下有沒有設(shè)置JAVA的環(huán)境變量。

MaxCompute中odpscmd如何使用

上述就是小編為大家分享的MaxCompute中odpscmd如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI