日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MaxCompute - ODPS重装上阵 第一弹 - 善用MaxCompute编译器的错误和警告

發(fā)布時間:2024/8/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MaxCompute - ODPS重装上阵 第一弹 - 善用MaxCompute编译器的错误和警告 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要: MaxCompute (ODPS) ( 注1 )是阿里云自主研發(fā)的具有業(yè)界領(lǐng)先水平的分布式大數(shù)據(jù)處理平臺, 尤其在集團內(nèi)部得到廣泛應(yīng)用,支撐了多個BU的核心業(yè)務(wù)。 ODPS2.0除了持續(xù)優(yōu)化性能外,也致力于提升SQL語言的用戶體驗和表達能力,提高廣大ODPS開發(fā)者的生產(chǎn)力。

MaxCompute (ODPS) ( 注1 )是阿里云自主研發(fā)的具有業(yè)界領(lǐng)先水平的分布式大數(shù)據(jù)處理平臺, 尤其在集團內(nèi)部得到廣泛應(yīng)用,支撐了多個BU的核心業(yè)務(wù)。 ODPS2.0除了持續(xù)優(yōu)化性能外,也致力于提升SQL語言的用戶體驗和表達能力,提高廣大ODPS開發(fā)者的生產(chǎn)力。

基于ODPS2.0新一代的SQL引擎,MaxCompute顯著提升了SQL語言編譯過程的易用性與語言的表達能力。
我們在此推出MaxCompute(ODPS2.0)重裝上陣系列文章

第一彈 - 善用MaxCompute編譯器的錯誤和警告
第二彈 - 新的基本數(shù)據(jù)類型與內(nèi)建函數(shù)
第三彈 - 復(fù)雜類型
第四彈 - CTE,VALUES,SEMIJOIN

這次首先向您介紹在易用性方面的改進。

場景1
作為ODPS的開發(fā)者,提交了一段SQL腳本,里面兩句SQL,等了半天排上隊,結(jié)果發(fā)現(xiàn)第一句里面有個函數(shù)的參數(shù)類型錯誤,白等了。。。;修改腳本后再次提交,排隊,第一條語句用了兩個小時跑完了,然后報告第二個語句漏了半邊括號。。。
場景2
我的上游數(shù)據(jù)有個表create table my_upperstream(…, id string) partitioned by (…), 我的項目每天有一個任務(wù)要和my_uppertstream在id上join,… join my_upperstream u on id = u.id,過去沒有問題,最近總是發(fā)現(xiàn)有些數(shù)據(jù)莫名其妙的丟失,經(jīng)過幾天痛苦的debug,終于發(fā)現(xiàn)是因為我的id是bigint,在和u.id比較的時候,都竟然轉(zhuǎn)成了double,因為浮點誤差導(dǎo)致某些列join不上( 注2 );
怒氣沖沖在ODPS用戶群中中質(zhì)問,竟然告訴我這個是by design! 。。。

MaxCompute編譯器基于ODPS2.0全新自主研發(fā)的SQL引擎,尤其配合使用MaxCompute Studio,提供了豐富的錯誤提示與警告的功能。可完全避免以上問題。

編譯器的易用性改進
為了充分發(fā)揮MaxCompute編譯器的易用性改進,最好配合MaxCompute Studio (D2平臺對ODPS2.0的錯誤與警告的支持正在積極開發(fā)中,預(yù)計今年9月份上線,敬請期待!)。首先,請安裝MaxCompute Studio,導(dǎo)入測試MaxCompute項目,創(chuàng)建工程,建立一個新的MaxCompute腳本文件, 如下

可以看到

第一個insert語句中wm_concat函數(shù)使用有錯誤
第二個insert有一個錯誤和一個警告,錯誤是列名寫錯了
警告則是上面場景二種提到的,ODPS中當(dāng)比較bigint與double的時候,會隱含的都轉(zhuǎn)為double, 因為從string到double是有可能在運行時導(dǎo)致錯誤的轉(zhuǎn)換,所以MaxCompute編譯器會在此警告要您確定這個是不是您希望的行為
鼠標(biāo)停止在錯誤或者警告( 注3 )上,會直接提示具體錯誤或者警告信息。
如果我不修改錯誤,直接提交,會被MaxCompute Studio擋住,如下圖

按照提示修改錯誤和警告,如下圖,

再次提交,可以順利的運行,再也不用擔(dān)心因為語法錯誤白等了!

事實上,使用MaxCompute Studio可以把所有警告都設(shè)定為錯誤,如下圖

這樣就可以保證不會不小心漏掉任何有可能的錯誤!

MaxCompute團隊建議您在提交任何腳本之前,都使用MaxCompute Studio對腳本進行靜態(tài)編譯檢查,并強烈推薦將警告設(shè)定為錯誤,在提交前修改所有的警告,這樣可以花很少的時間避免大量花費大量計算與人力資源的錯誤。

除了可以幫助您節(jié)省時間外,也可以節(jié)省MaxCompute服務(wù)器端資源,目前每天MaxCompute SQL服務(wù)器花大筆計算資源在編譯那些有錯誤的SQL,連累沒有錯誤的也要跟著排隊。

另外您知道嗎?提交有錯誤的腳本會導(dǎo)致扣您的計算健康分,導(dǎo)致以后提交任務(wù)的優(yōu)先級被下調(diào)!某些警告報告的問題也會導(dǎo)致扣除健康分,使用MaxCompute Compiler和Studio,可以幫助您避免此類扣分,避免被降級!

警告中很多情況是不安全的隱式類型轉(zhuǎn)換,如果確實是想要的轉(zhuǎn)換,可以用cast (xxx as )的方式消除警告,如果覺得這么寫麻煩,MaxCompute 編譯器還提供一種簡潔的方式(xxx),如上面修改過的腳本所示。具體該用哪種完全取決于您的偏好。MaxCompute還有一系列的SQL語言方面的改進,此系列會向您逐一介紹。

小節(jié)
基于ODPS2.0 SQL引擎的MaxCompute新編譯器配合MaxCompute Studio,通過完整準(zhǔn)確地報告錯誤于警告,可以顯著提高用戶的生產(chǎn)力。不過提升生產(chǎn)力不能只靠準(zhǔn)確的錯誤和警告,豐富強大的SQL語言表達能力一樣重要,從下一篇開始,我們向您介紹MaxCompute在SQL語言上的各項改進!

標(biāo)注
注1 MaxCompute就是ODPS,是ODPS在阿里云上的品牌,本系列文章中,MaxCompute與ODPS可以通用。
注2 為什么int = string的時候要轉(zhuǎn)double呢?因為這個是Hive的行為,MaxCompute(原ODPS) 在當(dāng)初第一版的時候,為了替換當(dāng)時廣泛使用的Hive腳本,不得不兼容。現(xiàn)在有了警告,只要大家按照建議的方式使用MaxCompute,在需要的時候修改提示的問題,就不會再掉進這個坑里了!
注3 對于警告的標(biāo)注,我的設(shè)定是黃色波浪線,可以通過IntelliJ的Settings來修改,如下

點擊查看原文

總結(jié)

以上是生活随笔為你收集整理的MaxCompute - ODPS重装上阵 第一弹 - 善用MaxCompute编译器的错误和警告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。