MaxCompute命令行工具——odpscmd的操做使用

摘要: 在MaxCompute生態中,命令行工具究竟處於什麼樣的位置?它又發揮着什麼樣的做用?可以幫助開發者如何更好使用MaxCompute?在本文中,阿里巴巴計算平臺產品專家曲寧將經過一個完整簡單的小例子爲你們介紹MaxCompute命令行工具odpscmd的使用以及其所具備的各類能力。web

摘要:在MaxCompute生態中,命令行工具究竟處於什麼樣的位置?它又發揮着什麼樣的做用?可以幫助開發者如何更好使用MaxCompute?在本文中,阿里巴巴計算平臺產品專家曲寧將經過一個完整簡單的小例子爲你們介紹MaxCompute命令行工具odpscmd的使用以及其所具備的各類能力。shell

直播視頻回看,戳這裏!https://yq.aliyun.com/webinar...
分享資料下載,戳這裏!https://yq.aliyun.com/downloa...數據庫

如下內容根據演講視頻及PPT整理而成。編程

本文將主要按照如下五個方面進行介紹:瀏覽器

  1. 命令行工具odpscmd在MaxCompute生態中的定位
  2. 快速開始:一個完整簡單的小例子
  3. 客戶端提供的能力框架
  4. 客戶端重點場景說明
  5. 容易碰到的問題

1、命令行工具odpscmd在MaxCompute生態中的定位安全

odpscmd其實就是MaxCompute的命令行工具的名稱,其在整個MaxCompute中的位置是位於最上端的。以下圖所示,整個MaxCompute生態自下而上是支撐的關係,而真正暴露給用戶的是一套Rest API,這套API也是最核心的接口,不管是Java仍是Python的SDK都須要調用這些核心API。而命令行工具就是對於MaxCompute開放的Rest API作了深度的包裝,在客戶端使得用戶可使用命令的方式來提交做業,這些做業又將會經過接口提交給MaxCompute集羣進行相關的管理和開發。可能你們對於MaxCompute以及DataWorks這個組合比較熟悉,這是由於使用MaxCompute以前須要在DataWorks上面進行開通。實際上,MaxCompute自身也有一些生態工具,好比odpscmd以及MaxCompute Studio等。
圖片描述性能優化

2、快速開始:一個完整簡單的小例子框架

在本部分中,將經過一個簡單而完整的例子對使用odpscmd客戶端進行數據處理的各個階段進行介紹。在文中僅對於各個步驟進行簡略描述,具體的實踐操做詳見視頻分享。
圖片描述函數

做爲MaxCompute的客戶端工具,odpscmd與Hive CLI以及PSQL這樣客戶端工具是比較相似的,都是一個黑屏的操做管理工具。接下來爲你們分享一個完整而簡單的小例子,這個例子可以完整地覆蓋大數據處理的各個環節,包括了環境準備、數據接入、數據處理加工以及數據消費。在你們常見的大數據場景中,業務數據每每分散在數據庫以及其餘的生產環境中,而按期會進行數據採集或者同步,將生產環境中的增量數據同步到數據倉庫中去,這樣就會涉及到數據接入。以後在數據倉庫中就會週期性地作一些數據處理加工,這些加工有時候會用常見的SQL作,對於MySQL而言提供了MR這樣的編程框架,而一些具備深度需求的用戶則會經過UDF來實現一些比較複雜的業務邏輯,同時在數據加工的時候會須要監控做業的執行狀況,因此也會有對於進度以及成功狀態等的做業查看和管理的需求。做業處理完畢以後,這時候基本上完成了數據的清洗和聚合,這時候就能夠提供給數據消費方使用。對於數據使用消費方而言,每每須要將加工好的可消費數據迴流到業務系統來支撐在線應用,或者經過JDBC接口鏈接BI工具進行可視化分析,而業務分析師也每每但願下載一些數據進行二次加工和處理。工具

1.下載與配置安裝
對於odpscmd而言,你們能夠在官方網站上找到其下載地址,經過瀏覽器下載到本地的是一個ZIP包,解壓以後就能夠看到odpscmd一些相關目錄。而對於Linux用戶而言,也能夠經過yarn源去下載並安裝相應的包。下載完成以後,須要修改odps_config.ini配置文件,以下圖藍框中所示,須要錄入項目名稱,填寫登陸訪問者所擁有的access_id和access_key等認證信息。同時,這裏須要注意MaxCompute在國內的Region裏面的end_point域名是一致的;而對於tunnel_endpoint而言,則是和Region密切相關的,因此對於不一樣的Region而言,所填寫的tunnel_endpoint是不一樣的。在填寫完配置文件以後就能夠啓動odpscmd客戶端了。
圖片描述

2.數據環境準備
對於使用odpscmd客戶端的同窗而言,每每會深度地使用shell以及一些開源的工具進行配合。這裏舉個例子,在業務數據庫中有一張平常的業務表,可能存儲了平常業務點擊的日誌以及新增的訂單數據,那麼常見場景是須要將數據同步到數據倉庫,這個過程須要一些數據同步工具週期性地將數據加載到數據倉庫的表裏面,並且每每會須要創建相應的分區表,將相應的數據放入到相應的分區裏面去。這一個任務能夠經過開源工具DataX完成,實現將數據同步地插入到數據倉庫表裏面去。而當手工配置DataX命令時,有一些像分區字段這樣的參數每每是動態的,因此也須要動態地放入到DataX腳本的參數當中。
圖片描述

3.數據加工處理
當數據同步完成以後,在不少的場景中須要對一些分區表作加工處理,以下圖所示的例子中是新建一張表或者insert OVERWRITE一張表,還會對於數據表中因爲增量同步而引入的新的分區數據進行彙總聚合計算,並將結果生成到新表中。而看成業很是長的時候,odpscmd工具也提供了做業監控命令「Show p」,就可以檢索出全量歷史做業。而每一個做業都會有本身的instance_id,而對於MaxCompute而言,最基本的任務單元就是instance,每一個instance就是提交做業的實例。根據instance_id在過後還能夠檢索到其對應的Logview。總之,odpscmd自己就提供了完整的做業提交、做業過後查看以及對於指定做業詳情的查看能力。在本次分享的例子中,使用的是Tunnel對於MaxCompute的結果數據集進行下載,並經過Excel或者其餘的工具進行分析,所以執行tunnel download就可以將結果數據表下載到本地文件中。
圖片描述

3、客戶端提供的能力框架
上述的內容實際上是但願經過一個簡單的例子將平常較爲複雜的大數據處理流程和環節進行簡單回溯,藉此但願向你們傳達MaxCompute客戶端工具可以支持平常工做的各個環節。那麼,MaxCompute客戶端工具究竟有什麼樣的功能可以支撐各個環節的須要呢?其實,odpscmd的功能包含了對於項目空間的管理,對錶、視圖以及操做分區的操做管理,對資源、函數的管理,對做業實例的管理,而且提供數據上傳下載的數據通道,同時也提供安全與權限管理等其餘的操做。接下來就爲你們依次介紹。
圖片描述

項目空間相關操做
在鏈接項目以前首先已經建立了一個MaxCompute項目,在使用項目的時候可使用相似於Hive數據庫同樣「use <project_name>;」這樣的命令去跨空間切換,經過這種方式可使得用戶在多個項目之間進行快速切換,當使用了「use <project_name>;」以後,後續的全部命令將會直接應用到制定的項目中。
圖片描述

表相關操做
表相關操做的命令在odpscmd客戶端工具上可以很輕鬆地進行操做,其包含了表的建立和刪除以及對於表的修改,好比修改列名、修改分區、修改屬主Owner、非分區數據的刪除等。其餘的操做諸如show tables也都兼容了Hive的使用習慣。在下圖中爲你們列出了與表相關的操做命令以及幫助文檔。
圖片描述

視圖及分區相關操做
對於視圖和分區而言,odpscmd也能夠經過view方式把一些複雜的處理邏輯進行二次封裝,更容易地對外進行暴露。對於view而言,提供了建立、修改、刪除以及查看的操做。對於Partition而言,你們關注的也比較多,常見的就是如何查看錶的分區,經過show partition <表名>的方式就可以列出這張表裏面有多少個分區,同時分區的名稱是什麼。同時能夠藉助alter <表名>的方式將某一個分區刪除掉或者修改其命名。
圖片描述

資源與函數相關操做
深度用戶在使用時就會發現,不少內置函數不可以知足自身邏輯需求,每每會須要使用一些UDF來進行復雜計算,也能夠經過MR來作更自由的計算邏輯,這些時候用戶須要上傳一個自定義開發包,這些對於MaxCompute而言就是資源Resource。經過odpscmd能夠上傳也能夠查看項目中的資源。對於函數而言,用戶建立UDF的時候,就可使用create方式很容易地進行建立。
圖片描述

實例相關操做
對於實例而言,你們可能會在客戶端運行不少做業,可能在某個時間想要看看做業是否已經運行完成了,可是又記不住做業的具體ID是什麼,這時候就可使用show p和show instance命令來列出提交過的歷史做業,而且還支持按照時間等條件進行過濾。當instance列表獲取以後,對特定的任務作操做還可使用「wait」命令查看其詳情。
圖片描述

Tunnel相關操做
有一種操做命令其實是提交給控制、管理、數據查詢做業的命令,而且還有一部分是作數據的上下行,這有別於前面提到的任務提交,更多的是對於數據的吞吐量要求比較高,所以odpscmd集成了Tunnel工具,可以在命令行裏面進行數據上傳以及下載等。這裏常常會遇到的問題就是不少開發者在本身的生產環境裏面經過Tunnel作數據同步,而這時候對於斷點續傳的能力要求就會比較高了。
圖片描述

安全及權限相關操做
不少用戶對於DataWorks比較熟悉,DataWorks裏面有比較簡單明瞭的用戶角色受權管理的能力。而作數據庫的一些同窗則更加習慣於黑屏的方式,也就是經過命令方式作安全和權限的管理。
圖片描述

角色相關權限管理
好比對於角色相關權限的管理,能夠經過create role能夠在大數據項目中建立角色,並對角色賦權,將某一個用戶加入到角色當中去,或者移除相關的角色。同時也可以查看究竟有哪些角色。
圖片描述

用戶相關權限管理
對於用戶相關權限管理而言,最多見就是將一個阿里雲的帳號加進項目中去,併爲用戶指定具體的角色,並獲取對應的權限。
圖片描述

項目空間的數據保護
一些管理員對於項目空間的保護要求比較高,而在MaxCompute當中自然對於多租戶支持方面作了不少工做。好比能夠設置禁止項目數據被下載,僅容許幾個授信的項目之間共享數據,這樣就能夠將與項目空間相關的權限保護能力都放在odpscmd中。
圖片描述

權限查看
同時,odpscmd也給出了權限查看相關的命令。
圖片描述

其餘操做
odpscmd還提供一些其餘經常使用的操做。你們可能常常會遇到一些性能優化的場景,好比對於一張比較大的數據表作掃描分區的切分,這樣能夠增長做業任務的並行度,這些優化手段的開關均可以經過命令行進行快速設置,同時也能夠對於一些SQL進行成本預估,而且也能夠輕鬆地獲取幫助信息。綜上所述,odpscmd是一個比較強大而且完整的客戶端工具。
圖片描述

4、客戶端重點場景說明
接下來重點分享幾個客戶端使用的重點場景。
場景1:經過shell腳本調用tunnel命令進行文件上下傳
在這種場景下,默認會經過分隔符的方式進行上傳。而當用戶遇到了一些非標準化的分隔符時,經過-fd方式就可以快速適配對應的列分隔符。而不少同窗也但願經過shell腳本的方式可以動態地進行調度,這裏也會涉及到動態參數傳入的問題。以下圖中示例所示,能夠將日期動態地傳入到Tunnel命令當中去,週期性地將新增的日誌文件上傳或者下載到對應的目錄中去。
圖片描述

場景2:調試odpscmd命令
在非交互式的場景下,MaxCompute命令支持-f參數,可在腳本或其它程序中直接以odps -f <文件路徑>的方式支持MaxCompute命令。此外MaxCompute命令還支持-e參數,在這種方式下須要經過括號的方式將SQL命令嵌入進去。
圖片描述

場景3:運行數據查詢/數據加工做業UDF
在odpscmd裏面可以原生地支持UDF和MR,以下圖所示的是UDF做業的使用流程。
圖片描述

在前兩個環節須要在線下將寫好的UDF編寫好的程序打成Jar包,在命令行當中經過「add jar」的方式把其傳入到指定的項目中做爲一個資源。而經過createfunction命令能夠命名一個自定義函數並於上傳的主函數進行關聯,這樣就真正地創建了這樣的一個函數。以後在測試或者使用的時候經過調用剛纔建立的UDF進行使用。這樣就是經過odpscmd實現UDF的完整建立。

場景4:運行數據查詢/數據加工做業MR
對於MR做業而言,首先須要在編譯環境中編寫並打包MR程序,打包完成以後將其做爲一個資源註冊到項目之中,在odpscmd裏面執行「add jar」,以後在命令行裏面運行MR做業,以後就能夠得到相應的結果。
圖片描述

5、容易碰到的問題
接下來爲你們總結了幾個常見的問題。首先是動態參數的傳入,由於odpscmd是一種命令行的方式,那麼你們經過shell調用的比較多,這時候就涉及到如何將一些動態的參數調入進去,其實能夠經過shell的方式變相地將一些動態信息傳遞進來。還有一個常見的問題就是「手工執行odpscmd命令正常,經過shell腳本調用時報錯」,此時就須要檢查shell腳本下有沒有設置JAVA的環境變量。
圖片描述

總結
本文主要經過一個簡單而又完整的例子具體地描述了藉助MaxCompute客戶端進行數據加工處理的流程。同時,也爲你們介紹了MaxCompute客戶端工具所具備的功能,其不只僅可以實現建表、查數據,還可以實現不少的管理工做。此外,還給你們不少指引性的知識,但願你們可以經過本次分享更好地瞭解MaxCompute客戶端的使用方式。

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索