maxcompute(原odps)是阿裡雲自主研發的分布式大資料處理平台,為使用者提供了開放的程式設計接口和 sdk,允許使用者在其強大靈活的存儲和計算能力之上開發自己的資料應用和系統,創造更大的價值。 為了能讓這一過程更加順暢高效,随着 maxcompute 2.0 的釋出,我們提供了 maxcompute studio,一套基于流行的內建開發平台 intellij idea 的開發插件,讓使用者在內建開發環境(ide)中更友善地進行資料開發。
maxcompute studio 為開發者提供了良好的開發體驗,支援 maxcompute 項目浏覽、sql 腳本、使用者自定義函數(udf)、 mapreduce 程式的開發和智能提示、作業執行狀态展示等功能,本文将展開進行介紹。
maxcompute 通過表(table)來存儲資料,以項目空間(project)的形式來組織表和使用者自定義函數(udf)等其他資源。開發者在開發過程中會經常需要通路項目空間:列舉表、查詢表結構和中繼資料、預覽表中現有資料、向表中導入導出資料等。以前這些操作主要都隻能通過指令行工具或者管理者的管理工具才能獲得,現在開發者都可以通過 maxcompute studio 提供的項目浏覽器(project explorer)來完成這些操作。

在 intellij idea 中安裝 maxcompute studio 後,可以在 maxcompute project explorer 視窗中添加一個到 maxcompute 項目空間的連接配接,輸入使用者 accessid/accesskey 以及項目空間名稱和 endpoint 以後就可以在 project explorer 中浏覽項目空間的表、視圖、自定義函數、資源檔案等資訊。 輕按兩下一個表可以可以檢視對應的表結構(schema)和預覽資料(如上圖所示)。
所有在 maxcompute studio 添加過的項目連接配接,都會在使用者本地的檔案系統生成一份表結構的緩存,但不包含資料。有了這份本地緩存,即使在斷網的情況下,maxcompute studio 也可以為使用者在編寫 sql 代碼時提供資料定義、資料類型等方面的檢查和提示。使用者可以在網絡聯通的情況下通過手動重新整理的方式更新本地緩存。studio 也會在使用者出現由于資料表結構不對引起的編譯檢查錯誤時提示使用者重新整理緩存,與 server 端的 schema 保持一緻。
通過 project explorer,開發者可以非常輕松地了解工作的項目空間中的資料表的結構和資料,通過搜尋功能迅速找到想要檢視的表。除此之外,開發者也可以利用 project explorer 來檢視使用者自定函數(udf)的函數聲明甚至源碼。在 project explorer 中找到定義在項目空間中的 udf,可以看到所有的函數聲明,輕按兩下就可以在 ide 中檢視反編譯後的函數代碼。如果開發者本地有原有的源代碼,也可以在 ide 中進行關聯,修改後可以重新上傳到伺服器。
project explorer 提供了資料上傳下載下傳的使用者界面,可以友善地把本地資料上傳到 maxcompute 或者下載下傳已有的預覽資料。如果覺得這還不夠,使用者完全可以在內建的 ide 中通過右鍵菜單打開一個 maxcompute 用戶端視窗,進行各種熟悉的指令行操作,如下圖所示。
maxcompute 支援通過 sql 查詢語言來通路和處理系統中的資料。腳本編輯是 studio 提供的核心功能之一,充分利用本地編譯生成的抽象文法樹(ast)來提升腳本開發效率和開發體驗。提供智能代碼提示,文法高亮,文法檢查,風險及錯誤提示,類型檢查等一系列功能。我們的目标是讓開發 sql 以及使用者自定義函數(udf)擁有和其他進階程式設計語言一樣的高效體驗。下面将對 studio 中的代碼編輯功能作出詳細介紹。
基于 studio,使用者可以 intellij project 的方式本地管理 sql 腳本。在 intellij 環境中建立一個 maxcompute 開發項目,可以和其他 intellij module 一樣獲得 ide 提供的代碼管理的各種功能:如 git 內建,運作配置管理,編譯輸出檔案管理等。 熟悉 intellij 的開發者可以很容易地用自己熟悉的方式開發和管理 sql 程式。
studio 提供了基于抽象文法樹(ast)的代碼補全功能,能夠根據腳本上下文及關聯的 maxcompute project 給出智能提示,進而大大提高腳本開發效率。讓你擺脫寫 maxcompute sql 的白闆時代,再也不用來回對照 table schema 來編輯腳本了。
studio 提供基于文法樹的文法高亮功能,允許使用者為不同類型 token 配置不同的高亮方案,極大地增強了代碼的可讀性,提升開發舒适度。與一般通用的編輯器提供的文法高亮不同,studio 可以根據上下文識别 token 的特定類型,給予不同的高亮顯示,比如 <code>count</code> 可以作為關鍵詞也可以作為函數名出現,studio 可以識别不同的語境。 對于存在或者不存在的 table,studio 也能以不同顔色進行辨別。
如下圖所示:
與 intellij ide 對 java 語言的高亮配置類似,maxcompute sql 腳本文法高亮的配色也可由使用者自己配置。在 preference 配置面闆中,使用者可以為不同類型的 token 制定文法高亮方案。
maxcompute studio 能夠根據編譯結果進行錯誤提示。腳本編輯功能與 maxcompute 編譯器高度整合,能夠在腳本編輯過程中實時進行文法檢查,并通過特殊高亮及 tips 文本給出錯誤提醒。便于開發人員快速排錯,提前對位問題。
由于 maxcompute 文法及資料類型轉換的靈活性。使用者在很多情況下,書寫的腳本沒有文法錯誤,但是沒有得到想要的結果。針對這個痛點,studio 會結合腳本的編譯結果,給出相應的 warning 提示,将使用者腳本中潛在的風險在開發和調試階段給出提醒,防患于未然。 studio 對相關風險部分給予文法高亮展示并給出詳細說明,如:
studio 提供腳本本地編譯功能,在送出到伺服器上運作之前在本地進行必要的文法檢查、類型檢查等,編譯過程資訊通過 compiler view 窗格展現給使用者。本地編譯可以提前發現腳本中的錯誤,大大減少錯誤腳本在伺服器端無效運作的比率。maxcompute 開發者之前經常遇到的一個痛點就是一個多語句的腳本,可能前面的語句執行正常,但是在後面的一條語句有文法或者類型錯誤,導緻整個作業失敗,而且浪費了前面成功語句的執行時間和資源。 使用 studio 提供的本地編譯功能,就可以通過送出前的本地編譯一次性地發現腳本中所有的文法與類型錯誤,快速定位和解決。 輕按兩下編譯結果視窗中的 log item,可以快速定位到腳本的對應行列位置,直接進行修複。
studio 中編輯好的腳本能夠直接在 ide 中送出執行。點選編輯器上方工具條中的綠色執行按鈕即可送出到腳本關聯的 maxcompute 項目空間排隊運作。送出執行的腳本可以實時檢視運作狀态,檢視執行計劃圖,可以在 running info 窗格中檢視任務動态輸出資訊。執行結束且有輸出資料的腳本,可以在 running result 窗格中檢視輸出結果。 下圖展示了在 studio 中送出的腳本的運作狀态:
執行輸出 & logview url
select 語句輸出結果
腳本編輯器中,通過滑鼠懸停的方式可以檢視一個 table 的 schema 資訊,包含 table 所有列及列資料類型資訊,友善使用者開發。
studio 會根據上下文對變量引用做類型檢查,對于錯誤的引用給出提醒
腳本編輯過程中,studio 會對 udf 的函數簽名進行實時檢查,對參數類型或數量不比對的場景給出錯誤提示。
作為開發者,經常需要關心自己送出到 maxcompute 伺服器上的作業執行狀況。 maxcompute studio 提供了 job explorer 來管理、展示使用者所在項目空間中的作業詳細資訊。
通過 job explorer 視窗,使用者可以一目了然地獲得自己送出的所有曆史作業的清單。清單可以通過項目名稱,以及曆史跨度等條件進行過濾。 提供卡片和清單兩種方式進行展示。
在 project 下拉框中選擇對應的 project,點選 refresh 按鈕,列出對應項目上所有使用者自己送出的作業清單,所有在 project explorer 中建立了連接配接的 project 均可以查找到。查詢的時間跨度可以調節,最長可以查詢距目前時間 7 天的曆史作業記錄。
使用 logview 來檢視一個作業的詳細資訊是 maxcompute 使用者熟悉的方式。使用 logview 還有一個便利之處是可以檢視其他使用者在其他項目空間中送出的任務狀态。 在 studio 中我們也提供了通過輸入一個有效的 logview url 打開任意一個作業詳情的功能。
可以打開 studio 的 toolbar 上選擇:
也可以直接在菜單上找到 maxcompute 菜單打開:
然後通過粘貼 logview url 的方式找到作業并打開作業詳情視圖
在 job explorer 輕按兩下作業卡片或者作業清單中的一個作業,或者輸入有效的 logview url,可以打開該作業的詳情頁面。如圖所示:
在作業詳情頁面中包含五個标簽頁: 可視化、概要(json)、概要(文本)、sql和執行結果。
可視化标簽頁:負責展示作業的執行關系圖,tasks 清單,及各個 tasks 對應的具體的計算任務清單和詳細資訊。作業執行關系圖可以展示作業 task 之間的執行邏輯,輕按兩下每個 task 節點可以進一步展開檢視任務的執行算子。在頁面右側的任務清單中可以檢視每個計算單元具體的計算任務的執行情況,點選右鍵還能夠把清單導出或者檢視進一步的标準輸出(stdout)和标準錯誤輸出(stderr)的資訊。
概要(json)标簽頁:作業概要的 json 資訊,包含完成的作業輸入輸出參數等
概要(文本)标簽頁:作業概要的文本資訊。
sql 标簽頁:顯示送出作業的 sql 源代碼
執行結果标簽頁:以表格形式顯示作業的結果輸出
現在就可以免費下載下傳、安裝 maxcompute studio。
需要 jdk 1.8
在 intellij idea 中打開 file | settings | plugins, 點選 browse repositories... 按鈕
搜尋 “maxcompute studio", 安裝 maxcompute studio 插件
完成安裝,重新啟動 intellij idea
maxcompute studio 緻力于為使用者提供更好的海量資料應用開發體驗,目前後續版本已經在開發中。我們将在後續版本中提升 project explorer 的項目管理功能;提供更加豐富的 sql 智能編輯支援;提供與 web 版本 data ide 的內建,管理使用者的工作流;提供 udf 的開發和線上調試功能等。 相信我們能給廣大開發者的資料開發之路助上一臂之力。
maxcompute studio 是随 maxcompute 2.0 推出的內建開發工具。 想了解更多關于 [maxcompute](