MaxCompute 最新特性介紹 | 2019大數據技術公開課第三季

距離上一次MaxCompute新功能的線上發佈已通過去了大約一個季度的時間,而在這一段時間裏,MaxCompute不斷地在增長新的功能和特性,好比參數化視圖、UDF支持動態參數、支持分區裁剪、生成建表DDL語句功能等功能都已經獲得了廣大開發者的普遍使用。那麼,近期MaxCompute究竟還有哪些新特性呢?本文就爲你們揭曉答案。數據庫

如下內容根據視頻及PPT整理而成。安全


MaxCompute與阿里雲大數據產品解決方案性能優化

在介紹MaxCompute新功能前,咱們先快速對阿里雲的大數據產品解決方案進行介紹,以便不熟悉MaxCompute的朋友能快速創建認知。阿里雲大數據解決方案中包含了數據接入、數據存儲及處理分析、數據服務以及在線應用等這樣的幾個維度。一般的狀況下,基於MaxCompute和阿里雲大數據解決方案搭建的系統會經過DataWorks實現離線多源異構數據的同步,並向MaxCompute大數據平臺加載數據。與此同時,藉助於DTS日誌服務、Kafka消息隊列服務實現對實時數據的收集。以後,經過流式計算服務實現對於數據的實時計算和分析,並將數據投遞到實時在線的服務或者回流到統一的數據倉庫服務中去。數據落盤保留下來以後,將進行數據倉庫相關的處理分析,加工成爲能夠被業務消費、高質量的數據集。同時,利用機器學習平臺能夠開展包含數據準備、模型訓練、模型部署在線推理在內的完整智能應用。

在數據服務(data serving)維度,阿里雲大數據產品解決方案中也提供了多種的服務,包括了關係型數據庫、分析型數據庫、ES等,這些服務可以幫助用戶加速在面向在線應用場景下的數據消費。同時,阿里雲大數據產品解決方案還可以與阿里雲線上的Quick BI、DataV以及第三方客戶自行購買的BI等工具進行結合。在雲上大數據場景下,DataWorks則承擔的是總體的數據開發、編排調度以及數據管理的職能。

What's New?MaxCompute產品近期發佈預覽
本次分享面對的主要羣體是對於阿里雲MaxCompute產品有所瞭解而且有必定使用經驗的客戶,所以所介紹的內容會比較細緻,但不會過多展開相關背景及原理介紹,更多地會面向MaxCompute已有的問題以及新推出的特性自己進行分享。

近期以來,MaxCompute大約每三個月就會迭代一個大版本發佈到線上,而中間則會有不少個小版本。到8月份的時候,已經距離上次MaxCompute線上發佈會通過了大約一個季度的時間,所以須要再作一次新特性的發佈。因此本次分享不只涵蓋了MaxCompute針對平常需求的功能發佈,也包括了大版本發佈的內容。

本次所要介紹的MaxCompute產品近期的發佈狀況主要包括三個部分,首先是近幾個月已經陸續發佈上線,而且產品文檔已經完備的功能,但願但願經過本次介紹讓開發者可以更好地瞭解這些新的功能;其次是目前MaxCompute在線上所正在作的大版本升級中已經實現的一批灰度升級項目,本次也會對於其中一些比較成熟的功能進行分享;最後就是一些即將面向更大規模的用戶進行發佈的功能,也就是目前還處於定向內測階段的功能。

新Region開服:西南成都節點正式開服、國際Region提供Spark服務
隨着阿里雲西南成都節點的正式開服,大數據計算服務MaxCompute也正式在西南成都節點開服售賣。與此同時,MaxCompute也提供了不少國際的Region,阿里雲根據用戶需求的強烈程度優先在香港、德國、新加坡、印度和美西這五個國際Region推出了Spark服務。



新功能:SQL-參數化視圖
MaxCompute近期發佈上線的版本圍繞着SQL核心功能的一些細節作了大量的優化和提高,其中一點就是參數化視圖。MaxCompute傳統的視圖(VIEW)中實現了必定的封裝與重用,可是並不接受調用者傳遞的任何參數,例如:調用者沒法對視圖讀取的底層表進行數據過濾或傳遞其它參數,致使代碼重用能力低下。MaxCompute近期發佈上線的版本的SQL引擎支持帶參數的視圖,支持傳入任意表或者其它變量來定製視圖的行爲,從而加強了視圖的可用性和複用度。



新功能: SQL-UDTF/UDAF支持動態參數
新發布的MaxCompute版本的SQL可以支持UDF相關的動態參數。以下圖中的代碼所示,其中含有一個命名爲JsonTuple的UDTF。這裏JsonTuple的業務需求就是首先讀取一個JSON串,其中包含了一系列JSON內容,而且須要解析其中某些節點的信息。



面對像JsonTuple這樣的函數設計,雖然給定了一個JSON,可是可能須要根節點的參數,也可能須要根節點+子節點或者多個子節點的參數去提取並解析JSON字符串中的信息,此時就形成了函數的不肯定性,所以函數最好可以支持用戶動態的參數輸入,也就是能夠根據用戶的動態參數輸入提取相應的信息。MaxCompute的UTDF和UTAF在參數列表中支持使用*的模式,表示接受任意長度、任意類型的輸入參數,從而知足了上述場景的需求。

新功能: SQL-UDT支持資源(Resource)訪問
User Defined Type,簡稱UDT,它屬於最近幾個版本MaxCompute的SQL裏面推出的比較新的功能,目前應用也不是很是普遍。UDT是MaxCompute 2.0以後主張使用的NewSQL能力,其容許在SQL中直接引用第三方語言的類或者對象,獲取其數據內容或者調用其方法。目前,MaxCompute的SQL中的UDT提供的是對於Java UDT的支持。舉例而言,若是想要在MaxCompute中獲取整數中的最大值,一般須要本身寫一個UDF函數並經過其餘語言實現出來,而其實在像Java這樣的高級語言中的一些內置方法就可以實現,所以能夠簡單地使用Select Java庫中的一個方法來得到相應的能力。這是以前所發佈的UDT自己的能力,而今天要發佈的新特性則是UDT對於MaxCompute中資源訪問的支持。MaxCompute中有不少種對象,其中一種就是資源,好比一些數據文件。MaxCompute可使用SQL經過Resource讀取文本文件,也能夠經過Set參數的方式將自定義的JAR做爲UDT可以直接訪問的一個庫,並在UDT當中使用用戶自定義的第三方庫。



新功能:SQL-UDF支持分區裁剪
MaxCompute自己有大量的分區表,在分區的使用中一個很重要的優化點就是經過分區裁剪的方式在查詢中過濾分區。在過濾分區的時候,有時須要使用一些自定義的邏輯,經過一些自定義的功能來肯定分區的範圍。當增長一個UDF時每每會發生全表掃描,這是由於在提交查詢的時候還不能肯定提交的分區究竟是哪一個,所以會發生全表掃描,進而帶來比較高的費用和更重的負載。



新發布的MaxCompute版本中的SQL已經可以支持UDF分區裁剪的能力了。其邏輯是當提交的SQL存在UDF的時候,會首先將UDF單獨提取出來執行,將UDF的執行結果拿到以後再和原來的查詢語句進行拼裝再提交。這樣一來,當存在動態不肯定的信息時,首先會解析動態信息,再肯定分區範圍,從而進行分區裁剪,儘可能減低數據掃描所產生的費用。其開發方式就是在UDF中加一些參數,就可以使得UDF支持分區裁剪。

新功能:SQL-生成建表DDL語句功能
不少開發者都有將項目中數據表的DDL導出來的需求,新版本的MaxCompute也提供了兼容Hive的SHOW Create table + 的方式。從下圖中的案例也能夠看出,使用SHOW Create table + 以後就可以得到該表的DDL的腳本,經過這種方式就可以實現重建表或者作表結構備份的工做。



新功能: SQL-支持指定表的列默認值
新版本的MaxCompute中也支持了指定表的列默認值。其實熟悉大數據發展歷程的同窗們都應該有所瞭解,數據庫中存在不少比較完善技術,好比在校驗機制、約束條件上都提供了各類默認值可供開發者選擇。而大數據技術在這些方面所作的遠遠不夠,目前的發展趨勢是在數據的質量和數據的校驗等方面工做中,大數據技術愈來愈靠近數據庫技術。在MaxCompute最新的版本發佈中提供的DEFAULT VALUE就容許了用戶建立數據表的時候去指定默認值。



在上圖的代碼示例中,建立了一個表T,表T中包含了a、b兩列,這兩列的數據類型都是bigint,而且a的默認值設爲10。當向這個表中插入數據記錄而且只對於字段b進行插數據的時候,MaxCompute會自動地在結果當中將a的值按照默認值補齊,其等效於同時在a列中插入10而且在b列中插入100。這樣的功能在不少場景下用處仍是比較大的,好比某些字段默認設置爲0或者爲空的狀況。

新功能: SQL-支持LIMIT OFFSET
以前的時候,不少用戶也有這樣的一個呼聲,就是但願在MaxCompute的SQL上面作到像MySQL、PG這些數據庫同樣的分頁功能,可以定位到在多少行以後取多少行數據,這樣的功能在數據庫中是很是通用的。之前,在MaxCompute的SQL裏面經過爲每一行數據打一個惟一標示Row Number,再用Between And這樣的方式來變相地實現分頁功能。而在新版本的MaxCompute中,SQL自己就已經原生地支持了LIMIT OFFSET的語法,能夠更加容易地實現分頁的需求。



新功能:SQL-新增內置函數JSON_TUPLE、EXTRACT
接下來介紹MaxCompute的SQL中兩個比較實用的函數——JSON_TUPLE和EXTRACT。MaxCompute自己在以前對於字符串的處理只有一個getJsonObject()內建函數,而只有這樣的一個函數是比較痛苦的,由於在構建JSON串的時候每每須要屢次調用這個內建函數來獲取某個節點的值。



而新增的JSON_TUPLE函數則解決了這些問題。使用JSON_TUPLE首先能夠得到一個JSON字符串,該函數的參數則能夠是多個動態的參數,好比想要獲取10個節點的值就能夠帶10個參數,並且還適合使用嵌套式數據,所以JSON_TUPLE未來也會成爲開發者使用較多的內建函數。此外,新版本MaxCompute的SQL中還支持了EXTRACT函數,可以按年、按月、按日、按小時、按分鐘來截取日期。由於對於日期的處理也屬於高頻操做,所以EXTRACT函數也將會被高頻地使用。

新功能-分區管理
除了前面提到的MaxCompute在SQL中的一些加強功能以外,新版本的MaxCompute還提供了一些其餘的能力,好比分區管理的能力。在分區管理部分,一個比較重要的場景就是因爲開發者每每喜歡使用較多的分區,而當數據量大的時候可能會形成多級嵌套分區,所以表的分區數量就會很是龐大。而MaxCompute自己對於分區數量存在一個上限,當數據分區過多的時候就須要將歷史過往的分區進行合併,而且刪除沒必要要的分區。



分區管理的最佳實踐就是在數據比較「熱」的狀況下,分區切分得可能會比較細,當數據沉澱時間比較長的時候,過往的歷史數據被訪問的頻率就會比較低,所以能夠經過分區歸併的方式減小分區的數量。過去刪除分區的時候也是比較痛苦的,須要每次經過drop partition來刪除一個分區,而如今MaxCompute在drop partition命令裏面也支持了一次刪除多個分區的能力,能夠經過一次操做刪除多個分區。

新功能-預付費資源監控報警
預付費資源監控報警是MaxCompute近期發佈的一個新功能。阿里雲MaxCompute的不少用戶使用的都是預付費的固定CPU大小的資源組,在這種場景下,用戶每每會更加關注購買的資源是否過多,在業務高峯期可否將其充分地利用起來,是否須要須要擴容或者縮容等。與此同時,用戶還須要對於一些關鍵任務進行監控,好比在做業排隊比較嚴重,產生積壓的狀況時,也但願可以經過監控報警系統得到排隊積壓信息,而且及時告警,從而更加利於人工及時進行干預,保證當核心業務出現問題時可以獲得及時處理。



MaxCompute所提供的預付費資源監控報警能力基於阿里雲所提供的雲監控服務,而且結合了配額組CPU使用量、做業等待等待數、內存使用量、總體CPU使用率等一些關鍵指標,經過對以上這些指標進行規則配置,就能實現對於關鍵事件的短信通知以及實時告警,從而幫助用戶更好地管理和使用資源。

新功能-IP白名單支持IPV6
目前,IPV6已經成爲阿里雲總體都會支持的能力,而MaxCompute自己也支持了IPV6。對於IP白名單這個安全特性而言,過去MaxCompute支持IPV4,目前也擴展支持了IPV6,使用方式與本來的IPV4差別不大,經過白名單列表的設置就可以同時支持IPV4和IPV6。機器學習


新規格:預付費套餐(計算資源+存儲資源)發佈
前面爲你們介紹了MaxCompute在新版本的發佈中的一些功能,接下來將爲你們介紹MaxCompute的一種新規格。新版本的MaxCompute中推出了預付費套餐(計算資源+存儲資源)的規格。對於MaxCompute而言,主要有兩種付費形式,其中一種是按量付費,這種方式具備極致的彈性,而且可以自動伸縮;另一種是按做業付費,這種方式比較符合指望的財務支出,在性價比方面更具備優點。



本次新發布的預付費打包套餐和以前的固定資源配額都屬於固定規格預付費方式。預付費套餐的售賣方式爲混合付費,在開通時以包年包月方式購買計算資源(主要爲CU)和存儲資源。使用時,公網下載流量和超出的存儲容量按使用量收費。整體而言,預付費套餐至關因而對用戶的優惠套餐,相比於企業客戶在線下自行搭建的大數據經常使用配置的計算和存儲規模,阿里雲本次所推出的預付費套餐將會提供一個十分具備競爭力的價格,這樣一來既可以保證企業每個月的財務支出比較穩定,同時也可以提供較高的性價比。

體驗優化:文檔持續優化及最佳實踐指引
MaxCompute團隊一直以來都很是注重產品文檔的質量和體驗,也在進行着持續地優化,並在社區中也和廣大的開發者保持着密切的交流和互動,獲取了開發者在MaxCompute產品使用以及產品如何應用到生產的過程當中的一些需求。MaxCompute團隊近期也將一些重點的、高頻的問題沉澱下來,造成了文檔化、案例形式的實踐指導,發佈到了官網上面。



這些文檔包含了如何基於MaxCompute構建和優化數據倉庫,同時也提供了一些數字化運營的具體案例,好比如何基於MaxCompute搭建互聯網在線的運營分析平臺。此外,由於Python生態廣受歡迎,開發者也是人數衆多,所以PyODPS也受到了不少Python開發者的支持,經過前一個階段的反饋,MaxCompute團隊也發現PyODPS在文檔方面存在一些不足之處,所以近期也作了專項整理。MaxCompute團隊整理了PyODPS的一些指導文檔和具體示例,你們能夠到官網上去查看最新發布的指導文檔和案例。

新功能內測:元數據服務Information_Schema
前面分享的是MaxCompute新版本中的一些線上可用的功能,而在實際上還有一些功能目前處於內部定向邀請測試階段,這些功能也是社區中不少開發者以及企業客戶所很是看重的功能。這裏爲你們介紹兩個處於內測階段的功能,其中第一個就是元數據服務。MaxCompute自己是一個多租戶的系統,用戶使用的時候很是但願將更多的數據以更加友好的方式開放給使用者,可以幫助使用者自助地瞭解項目中的一些信息,其中比較常見的就是元數據信息,好比Table、Partition、Column、UDF、Resource、User等信息。以往這些信息都是經過命令的方式獲取,可是當元數據量很是大的時候,很難經過這種方式去得到或者檢索和過濾信息。而在傳統的數據庫技術領域有很是多的解決方案,所以MaxCompute中也提供了Information_Schema這樣的一套服務,在遵循規範的基礎之上也添加了一些MaxCompute特有的視圖和字段,既可以知足開發者原有的一些使用習慣,也可以更好地結合MaxCompute自己的一些特色。



經過內建服務,MaxCompute首先會爲用戶提供一個Information_Schema庫,用戶能夠去自助地去訪問相關的元數據信息,好比項目中的表格、字段、視圖、建立人、建立時間以及表的大小和生命週期等。經過這種方式就可以對於表的全局信息有一個很好的把控。與此同時,MaxCompute也會提供準實時的做業歷史明細的查詢能力。做業歷史包含了平常的實例信息、SQL的做業明細等。以往是經過show instance等命令獲取近期執行做業的信息,而現在能夠經過對於視圖的查詢方式來獲取本項目全部做業信息,而且可以經過一些過濾條件篩選出本身所須要的做業信息。所查詢出來的信息則包括了項目類、項目名稱、做業提交時間、做業狀態、做業的SQL語句、數據的掃描量、複雜度以及資源消耗等信息,基於對於這些信息的統計就可以實現不少的性能優化以及診斷等相關工做。元數據服務Information_Schema這樣的能力也會在近期面向全體雲上用戶進行公測。

新功能內測:基於ActionTrail的行爲審計日誌服務
另外一個要介紹的處於內測階段的功能就是基於ActionTrail的行爲審計日誌服務。對於阿里雲MaxCompute團隊而言,常常會有企業提交工單但願可以幫助他們檢查一下某張表的數據被誰刪除了,或者某個帳號近期是否進行了數據下載。所以,MaxCompute也將要推出基於ActionTrail的行爲審計日誌服務,這款服務可以完整地記錄項目內的用戶操做行爲,並經過接入阿里雲Action Trail服務將MaxCompute用戶行爲日誌實時推送給客戶,知足客戶實時審計、問題回溯分析等需求。被審計的行爲包含了對於表的建立、刪除以及對於表結構的變動、寫入數據、下載數據等,而日誌信息也包含了企業比較關心的客戶端信息、操做的具體SQL內容、提交人、提交時間等關鍵信息。
函數


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

相關文章
相關標籤/搜索