導(dǎo)讀
在產(chǎn)品的龐大家族中阱佛,有一類(lèi)很重要的產(chǎn)品台丛,他就是工具產(chǎn)品耍缴,工具產(chǎn)品具備強(qiáng)服務(wù)性,并且使用場(chǎng)景時(shí)效性極強(qiáng)挽霉,高效便捷的工具極大的方便了我們的生活防嗡。
隨著大數(shù)據(jù)時(shí)代的帶來(lái),在工具產(chǎn)品中又衍生出了數(shù)據(jù)工具產(chǎn)品侠坎,隨著數(shù)據(jù)的增長(zhǎng)蚁趁,數(shù)據(jù)的價(jià)值也亟待我們?nèi)ネ诰颍鞔蠊菊诜e極挖掘數(shù)據(jù)價(jià)值实胸,并組建自己的數(shù)據(jù)團(tuán)隊(duì)他嫡,包括數(shù)據(jù)分析師、數(shù)據(jù)科學(xué)家庐完、數(shù)據(jù)產(chǎn)品經(jīng)理钢属、數(shù)據(jù)工程師等等,在這樣的契機(jī)下门躯,數(shù)據(jù)探索平臺(tái)應(yīng)運(yùn)而生淆党,作為一款數(shù)據(jù)工具產(chǎn)品,數(shù)據(jù)探索平臺(tái)支持?jǐn)?shù)據(jù)開(kāi)放和探索,賦能業(yè)務(wù)團(tuán)隊(duì)以及合作伙伴染乌。支持?jǐn)?shù)據(jù)分析師山孔、數(shù)據(jù)科學(xué)家和數(shù)據(jù)工程師等數(shù)據(jù)團(tuán)隊(duì)成員,用他們習(xí)慣和擅長(zhǎng)的工具荷憋,協(xié)同進(jìn)行數(shù)據(jù)科學(xué)項(xiàng)目饱须。
數(shù)據(jù)工具產(chǎn)品很重要,與此同時(shí)台谊,這方面的人才卻很稀缺。數(shù)據(jù)工具產(chǎn)品經(jīng)理不僅僅要求傳統(tǒng)產(chǎn)品經(jīng)理的基本能力譬挚,還對(duì)技術(shù)背景和大數(shù)據(jù)架構(gòu)有一定要求锅铅,這里我們不妨看一下業(yè)界領(lǐng)先數(shù)據(jù)產(chǎn)品阿里云對(duì)數(shù)據(jù)產(chǎn)品經(jīng)理的要求:
阿里云-高級(jí)數(shù)據(jù)產(chǎn)品經(jīng)理
級(jí)別:P7\P8 地點(diǎn):北京、杭州 均可 負(fù)責(zé)ApsaraDB數(shù)據(jù)庫(kù)產(chǎn)品設(shè)計(jì)减宣,ApsaraDB數(shù)據(jù)庫(kù)服務(wù)是阿里云核心的數(shù)據(jù)類(lèi)的產(chǎn)品盐须,是阿里云最為重要的PASS平臺(tái)之一。 工作內(nèi)容: 1. 完成市場(chǎng)調(diào)研與競(jìng)爭(zhēng)對(duì)手分析漆腌,準(zhǔn)確定義數(shù)據(jù)庫(kù)/大數(shù)據(jù)具有市場(chǎng)競(jìng)爭(zhēng)力的產(chǎn)品 2. 規(guī)劃產(chǎn)品的生命周期和交付形態(tài)贼邓,對(duì)項(xiàng)目結(jié)果負(fù)責(zé) 3. 關(guān)注用戶(hù)體驗(yàn)負(fù)責(zé),產(chǎn)出安全闷尿、穩(wěn)定塑径、易用的產(chǎn)品 4. 組織研發(fā)、測(cè)試填具、運(yùn)維统舀、運(yùn)營(yíng)的高效溝通 5. 支持業(yè)務(wù)團(tuán)隊(duì)完成營(yíng)收目標(biāo) 要求: 1. 計(jì)算機(jī)科學(xué)領(lǐng)域(CS)學(xué)士或碩士學(xué)位 2. 對(duì)大數(shù)據(jù)架構(gòu)基本了解,有一定的大數(shù)據(jù)架構(gòu)經(jīng)驗(yàn) 3. 了解以下Hadoop\Spark\HBase\MongoDB\Redis優(yōu)先 4. 了解數(shù)據(jù)庫(kù)基本理論劳景、大數(shù)據(jù)基本理論誉简、云計(jì)算 5. 程序員/DBA出身優(yōu)先 6. 了解大數(shù)據(jù)方案優(yōu)先
數(shù)據(jù)工具產(chǎn)品很重要,數(shù)據(jù)工具產(chǎn)品人才很稀缺盟广,自然闷串,數(shù)據(jù)工具產(chǎn)品文章也很少。
基于此筋量,結(jié)合自己的數(shù)據(jù)產(chǎn)品經(jīng)驗(yàn)烹吵,簡(jiǎn)單談一下數(shù)據(jù)探索平臺(tái)設(shè)計(jì)中的一個(gè)Feature,“CheckStyle”毛甲,和大家探討年叮,希望起到拋磚引玉的效果。
核心觀(guān)點(diǎn)
因?yàn)橛脩?hù)編寫(xiě)的代碼可能存在質(zhì)量差玻募、性能低只损、不規(guī)范、語(yǔ)法錯(cuò)誤等問(wèn)題。CheckStyle將使用我們TD的規(guī)則庫(kù)跃惫,通過(guò)平臺(tái)和流程來(lái)保障代碼質(zhì)量叮叹,希望能盡早、盡快爆存、無(wú)感解決故障隱患蛉顽,以節(jié)約時(shí)間,提高效率先较,降低出錯(cuò)率携冤。
短期內(nèi)會(huì)通過(guò)代碼樣例,API半自動(dòng)化實(shí)現(xiàn)闲勺,不斷完善曾棕,最終實(shí)現(xiàn)自動(dòng)化。
同時(shí)在一定程度也可以提升用戶(hù)的技能菜循,這也是平臺(tái)“自動(dòng)化”的重要一步翘地。
正文
為什么想到設(shè)計(jì)“CheckStyle”這個(gè)Feature呢?
昨天和一位數(shù)據(jù)分析師同學(xué)閑聊癌幕,聽(tīng)到她隨口吐槽一件工作中的小事衙耕,見(jiàn)微知著,聊一下數(shù)據(jù)探索中的“CheckStyle”需求勺远,和大家一起探討哈橙喘。
對(duì)話(huà)大意:
“最近咋樣啊”省略N個(gè)字。
進(jìn)入正題胶逢,
分析師:“實(shí)習(xí)生寫(xiě)的SQL真是令人痛心渴杆,一堆錯(cuò)∠芩”
權(quán):“一堆錯(cuò)磁奖?規(guī)范問(wèn)題?語(yǔ)法問(wèn)題某筐?業(yè)務(wù)問(wèn)題比搭?性能問(wèn)題?或者南誊,都有身诺?”
分析師:“都有,畢竟是實(shí)習(xí)生抄囚∶股模”
果斷先diss她幾句,招人時(shí)咋不想清楚幔托,有經(jīng)驗(yàn)的好一點(diǎn)穴亏,沒(méi)經(jīng)驗(yàn)的就要做好培養(yǎng)的準(zhǔn)備蜂挪,而且必然是一段時(shí)間細(xì)致的培養(yǎng),答復(fù)嗓化,雖然她也做了準(zhǔn)備棠涮,但確實(shí)需要時(shí)間。
權(quán):“那你現(xiàn)在咋辦”
分析師:“能咋辦刺覆,遇到問(wèn)題解決問(wèn)題严肪,一個(gè)個(gè)看唄∏迹”
權(quán):“那個(gè)人力量有限啊驳糯,你時(shí)間有限,而且我們也只能說(shuō)熟練使用SQL氢橙,不能說(shuō)精通结窘,大多數(shù)場(chǎng)景能搞定,遇到一些問(wèn)題也需要查充蓝,這種事最好交給機(jī)器做,產(chǎn)品化喉磁∥焦叮”
分析師:“有意思,說(shuō)說(shuō)看协怒±员海”
權(quán):“我想想,寫(xiě)篇文章總結(jié)一下孕暇,大家一起探討吧仑撞。”
對(duì)話(huà)基本結(jié)束妖滔。
一段簡(jiǎn)短的對(duì)話(huà)隧哮,一件工作中的常見(jiàn)的小事,但可以挖掘的點(diǎn)很多座舍。
下面說(shuō)一下我的想法沮翔,“CheckStyle”。
一曲秉、“CheckStyle”是什么采蚀?
背景:
工作中類(lèi)似的問(wèn)題太多了,用戶(hù)編寫(xiě)的代碼可能存在質(zhì)量差承二、性能低榆鼠、不規(guī)范、語(yǔ)法錯(cuò)誤等問(wèn)題亥鸠。
這里的用戶(hù)包括:咨詢(xún)妆够、分析師、工程師、科學(xué)家等
這里的代碼包括:SQL责静、Python袁滥、Scala、R等
這么一說(shuō)大家感受可能不深灾螃。
我們?cè)賮?lái)看幾個(gè)鮮活的例子题翻,看一線(xiàn)中的具體場(chǎng)景:
1.前段時(shí)間一位數(shù)據(jù)科學(xué)家同學(xué)因?yàn)檩敵鰯?shù)據(jù)集目錄命名不規(guī)范,導(dǎo)致和DSS的時(shí)間分區(qū)功能沖突腰鬼。
數(shù)據(jù)科學(xué)家在我們印象中已經(jīng)比較專(zhuān)業(yè)了嵌赠,但依然有可能發(fā)生偏差。
其實(shí)“是人就可能會(huì)出錯(cuò)”熄赡,因此需要相應(yīng)的規(guī)則和流程來(lái)約束姜挺,減少出錯(cuò)率。
2.前天看到一篇Python性能提升的文章彼硫,大意如下:
Python 是機(jī)器學(xué)習(xí)領(lǐng)域內(nèi)的首選編程語(yǔ)言炊豪,它易于使用,也有很多出色的庫(kù)來(lái)幫助你更快處理數(shù)據(jù)拧篮。但當(dāng)我們面臨大量數(shù)據(jù)時(shí)词渤,一些問(wèn)題就會(huì)顯現(xiàn),因?yàn)樵谶@樣的量級(jí)上串绩,工作進(jìn)程中加入任何額外的計(jì)算都需要時(shí)刻注意保持效率缺虐。
在默認(rèn)情況下,Python程序是單個(gè)進(jìn)程礁凡,使用單 CPU 核心執(zhí)行高氮。而大多數(shù)當(dāng)代機(jī)器學(xué)習(xí)硬件都至少搭載了雙核處理器。這意味著如果沒(méi)有進(jìn)行優(yōu)化顷牌,在數(shù)據(jù)預(yù)處理的時(shí)候會(huì)出現(xiàn)「一核有難九核圍觀(guān)」的情況剪芍,超過(guò) 50% 的算力都會(huì)被浪費(fèi)。在當(dāng)前四核處理器(英特爾酷睿i5)和6核處理器(英特爾酷睿i7)大行其道的時(shí)候窟蓝,這種情況會(huì)變得更加明顯紊浩。
幸運(yùn)的是,Python庫(kù)中內(nèi)建了一些隱藏的特性疗锐,可以讓我們充分利用所有CPU核心的能力坊谁。通過(guò)使用Python的concurrent.futures模塊,我們只需要3行代碼就可以讓一個(gè)普通的程序轉(zhuǎn)換成適用于多核處理器并行處理的程序滑臊。
with concurrent.futures.ProcessPoolExecutor() as executor:
image_files = glob.glob("*.jpg")
executor.map(load_and_resize, image_files)
測(cè)例是將1000張圖片被傳遞到深度神經(jīng)網(wǎng)絡(luò)之前將其調(diào)整為600×600像素分辨率的形式口芍。
優(yōu)化前在酷睿 i7-8700k 6核CPU上,運(yùn)行時(shí)間為7.9864秒雇卷,在這樣高端CPU上鬓椭,這種速度讓人難以接受颠猴,優(yōu)化后運(yùn)行時(shí)間降到1.14265秒,速度提升了近6倍小染!
看完之后確實(shí)是拍手稱(chēng)快翘瓮,又get了一項(xiàng)新技能,使用Python的concurrent.futures模塊做性能優(yōu)化裤翩,節(jié)約時(shí)間资盅,提升效率。
同時(shí)想到之前我想落地線(xiàn)下消費(fèi)標(biāo)簽使用的一份poiid數(shù)據(jù)集踊赠,代碼早早的寫(xiě)好呵扛,然而排隊(duì)等待集群資源運(yùn)行就等了1天。
查了一下原因筐带,也沒(méi)有大任務(wù)阻塞集群今穿,確實(shí)是大家的任務(wù)很多,一個(gè)接一個(gè)伦籍。
想要解決蓝晒,從供需兩端考慮,
供給端帖鸦,擴(kuò)展集群資源芝薇,這個(gè)我們正在做,升級(jí)到新集群富蓄。
需求端,大家任務(wù)多慢逾,集群資源有限立倍,必然存在矛盾,這時(shí)可以評(píng)估任務(wù)的優(yōu)先級(jí)侣滩,保證緊急任務(wù)優(yōu)先處理口注,另一方面,總體任務(wù)數(shù)量和順序優(yōu)化后君珠,我們也可以對(duì)單個(gè)任務(wù)的運(yùn)行時(shí)間和效率進(jìn)行優(yōu)化寝志,優(yōu)化代碼,做性能提升策添,從而提升整體運(yùn)行效率材部。
要想優(yōu)化代碼,做性能提升:
會(huì)對(duì)用戶(hù)有更高的技能要求唯竹,督促用戶(hù)自我提高乐导,在這方面TDU有也相關(guān)技能課幫助提高,但畢竟術(shù)業(yè)有專(zhuān)攻浸颓,是不是應(yīng)該降低用戶(hù)的技術(shù)門(mén)檻物臂,讓其更專(zhuān)注于在具體業(yè)務(wù)和場(chǎng)景中探索數(shù)據(jù)價(jià)值旺拉。
學(xué)習(xí)需要時(shí)間,且學(xué)無(wú)止境棵磷,不建議讓用戶(hù)承載過(guò)多的負(fù)擔(dān)蛾狗。
因此,代碼性能提升我可能更傾向于平臺(tái)側(cè)智能管理仪媒,平臺(tái)自動(dòng)優(yōu)化提升性能沉桌,并info給用戶(hù)相關(guān)建議,感興趣的用戶(hù)可以參考info自我提升规丽,進(jìn)一步學(xué)習(xí)并反饋規(guī)則給TD規(guī)則庫(kù)蒲牧,形成閉環(huán)不斷優(yōu)化。不感興趣的用戶(hù)可以直接忽略?xún)?yōu)化info專(zhuān)注業(yè)務(wù)赌莺,平臺(tái)自動(dòng)優(yōu)化運(yùn)行冰抢,做到無(wú)感體驗(yàn),不知不覺(jué)中提升整個(gè)集群任務(wù)的運(yùn)行效率艘狭。
未來(lái)趨勢(shì)也應(yīng)該是朝“自動(dòng)化”方向走挎扰。
現(xiàn)在我們Data ATM數(shù)據(jù)提取平臺(tái)的運(yùn)行機(jī)制類(lèi)似,前端展示極簡(jiǎn)的界面巢音,用戶(hù)拖過(guò)簡(jiǎn)單拖拽完成任務(wù)的輸入輸出遵倦,后端是將用戶(hù)選擇的模塊轉(zhuǎn)化為SQL在提交到GP網(wǎng)關(guān)。
即降低用戶(hù)的技術(shù)門(mén)檻官撼,讓其更專(zhuān)注于在具體業(yè)務(wù)和場(chǎng)景中探索數(shù)據(jù)價(jià)值梧躺。
以計(jì)算2018年9月APP活躍設(shè)備數(shù)統(tǒng)計(jì)為例:
在用戶(hù)操作層面,用戶(hù)可以感知的就是簡(jiǎn)單拖拽活躍設(shè)備和篩選設(shè)備統(tǒng)計(jì)兩個(gè)功能模塊傲绣,然后選擇時(shí)間2018-09掠哥,僅此而已,完成數(shù)據(jù)提取秃诵。
大大降低用戶(hù)的操作門(mén)檻续搀,這也是我們數(shù)據(jù)提取平臺(tái)的初衷,讓業(yè)務(wù)人員(銷(xiāo)售菠净、咨詢(xún)等)在不懂SQL等語(yǔ)言時(shí)也能通過(guò)簡(jiǎn)單拖拽完成數(shù)據(jù)提取禁舷,讓其更專(zhuān)注于在具體業(yè)務(wù)和場(chǎng)景中探索數(shù)據(jù)價(jià)值。
數(shù)據(jù)提取平臺(tái)毅往,作為一款數(shù)據(jù)產(chǎn)品牵咙,簡(jiǎn)單易用的背后是什么?
還是看這個(gè)例子:
作業(yè)轉(zhuǎn)化為SQL語(yǔ)句攀唯,然后提交到GP網(wǎng)關(guān)霜大,SQL語(yǔ)句大致如下:
SELECT a.offsetid, UNNEST_2D_1D(a.app_active) AS active
FROM device_app_active_monthly a, (
SELECT partitionid::BIGINT * 10000000 + RB_ITERATE(bitmap) AS offsetid
FROM bitmap_rexxx
WHERE keyid = 123
) b
WHERE a.monthid BETWEEN '201809' AND '201809'
AND a.offsetid = b.offsetid;
我們做了什么?
(1)模塊的封裝革答,對(duì)應(yīng)底層數(shù)據(jù)集战坤,如活躍設(shè)備模塊對(duì)應(yīng)device_app_active系列數(shù)據(jù)集曙强;
(2)選項(xiàng)的封裝,對(duì)應(yīng)底層數(shù)據(jù)集相應(yīng)字段途茫,如2018-09時(shí)間對(duì)應(yīng)數(shù)據(jù)集的monthid碟嘴;
(3)作業(yè)的封裝,將作業(yè)所有條件轉(zhuǎn)化為SQL語(yǔ)句囊卜;
(4)UDF的定義娜扇,復(fù)雜操作通過(guò)UDF實(shí)現(xiàn)并優(yōu)化;
(5)數(shù)據(jù)結(jié)構(gòu)的定義栅组,使用Bitmap雀瓢,大大提升計(jì)算效率;
(6)數(shù)據(jù)庫(kù)選型玉掸,使用GP刃麸,提升整體效率。
等等~
好的工具司浪,真正讓用戶(hù)易用泊业,易用背后的邏輯我們沉淀,我們做的多啊易,用戶(hù)想的少吁伺。用戶(hù)專(zhuān)注于數(shù)據(jù)業(yè)務(wù),讓業(yè)務(wù)方和工具平臺(tái)都發(fā)揮最大的價(jià)值租谈。
發(fā)生上述這些問(wèn)題篮奄,有些可能是初出茅廬不諳世事的實(shí)習(xí)生,無(wú)經(jīng)驗(yàn)割去,技能上的短板窟却、未養(yǎng)成好的規(guī)范,
也可能是現(xiàn)在玩轉(zhuǎn)業(yè)務(wù)劫拗,熟練SQL的高級(jí)數(shù)據(jù)分析師间校,畢竟學(xué)海無(wú)涯矾克,技能上的盲點(diǎn)永遠(yuǎn)存在页慷。
還可能是用戶(hù)有相關(guān)經(jīng)驗(yàn),但就是百密一疏胁附,或者寫(xiě)代碼一時(shí)隨意酒繁。
但最終結(jié)果將會(huì)因?yàn)橐蝗耸韬鲈斐烧麄€(gè)集群任務(wù)隊(duì)列效率低下,或者之后運(yùn)用時(shí)出現(xiàn)意想不到的錯(cuò)誤控妻。
相關(guān)問(wèn)題還是需要嚴(yán)格的約束州袒,從平臺(tái)和流程層面管控。
將數(shù)據(jù)探索任務(wù)中遇到的各種問(wèn)題整理后弓候,結(jié)合開(kāi)源規(guī)范郎哭,一起作為我們TD的規(guī)則庫(kù)他匪。
綜上在此嚴(yán)格定義一下CheckStyle:
CheckStyle將使用我們TD的規(guī)則庫(kù),通過(guò)平臺(tái)和流程來(lái)保障代碼質(zhì)量夸研,希望能盡早邦蜜、盡快、無(wú)感解決故障隱患亥至,以節(jié)約時(shí)間悼沈,提高效率,降低出錯(cuò)率姐扮。
短期內(nèi)會(huì)通過(guò)代碼樣例絮供,API半自動(dòng)化實(shí)現(xiàn),不斷完善茶敏,最終實(shí)現(xiàn)自動(dòng)化壤靶。
二、為什么要做“CheckStyle”睡榆?
在說(shuō)完什么是CheckStyle后萍肆,再來(lái)說(shuō)為什么要做CheckStyle就很清晰了。
動(dòng)力:
因?yàn)橛脩?hù)編寫(xiě)的代碼可能存在質(zhì)量差胀屿、性能低塘揣、不規(guī)范、語(yǔ)法錯(cuò)誤等問(wèn)題宿崭,通過(guò)CheckStyle可以盡早亲铡、盡快、無(wú)感解決故障隱患葡兑,以節(jié)約時(shí)間奖蔓,提高效率,降低出錯(cuò)率讹堤。
同時(shí)在一定程度也可以提升用戶(hù)的技能吆鹤,完善我們TD規(guī)則庫(kù)。
這也是平臺(tái)“自動(dòng)化”的重要一步洲守。
阻力:
代碼樣例的梳理和準(zhǔn)備
規(guī)則庫(kù)的制定疑务,包括常見(jiàn)問(wèn)題和開(kāi)源規(guī)范的梳理;
產(chǎn)品研發(fā)側(cè)的設(shè)計(jì)和研發(fā)梗醇,DataCloud已經(jīng)停止迭代知允,綜合考慮DSS需求池和研發(fā)資源的現(xiàn)狀,現(xiàn)在有支持新集群等緊急需求在做叙谨,本需求相對(duì)而言?xún)?yōu)先級(jí)低一些温鸽,可以后續(xù)排期考慮。具體研發(fā)細(xì)節(jié)可以一起討論手负。
三涤垫、怎么做“CheckStyle”姑尺?
我們不妨參考借鑒一下同行,挑選國(guó)內(nèi)外的兩款優(yōu)秀競(jìng)品蝠猬,這里選擇國(guó)外的Dataiku DSS和國(guó)內(nèi)的阿里云數(shù)加:
1. Dataiku DSS 實(shí)踐
Dataiku DSS還處于一個(gè)相對(duì)早期的狀態(tài)股缸,在“CheckStyle”這一塊的實(shí)踐主要是Validate和code samples:
Validate功能會(huì)檢查查詢(xún)語(yǔ)法錯(cuò)誤和Schema的一致性問(wèn)題。
code samples功能則是插入代碼樣例吱雏,供用戶(hù)參考編輯敦姻。
2. 阿里云數(shù)加 實(shí)踐
我和阿里云的同學(xué)們溝通過(guò),確實(shí)是踩過(guò)了很多坑歧杏,在推廣過(guò)程中碰到大量的SQL優(yōu)化問(wèn)題镰惦,我們的結(jié)論也一致,無(wú)論是通過(guò)培訓(xùn)還是其他方式犬绒,其實(shí)都遠(yuǎn)沒(méi)有系統(tǒng)固化規(guī)則更好旺入,用系統(tǒng)流程化的方式解決問(wèn)題是平臺(tái)能夠規(guī)模化的核心要素凯力。
數(shù)加也確實(shí)走在行業(yè)的前列茵瘾,基于IntelliJ IDEA開(kāi)發(fā)插件MaxCompute Studio,MaxCompute 編譯器是新一代的SQL引擎咐鹤,顯著提升了SQL語(yǔ)言編譯過(guò)程的易用性與語(yǔ)言的表達(dá)能力拗秘。
定制化開(kāi)發(fā),更加靈活祈惶,功能強(qiáng)大雕旨。
本篇主要介紹以下兩點(diǎn):
(a)MaxCompute Studio會(huì)對(duì)代碼進(jìn)行靜態(tài)編譯檢查并給出修改建議,同時(shí)有計(jì)算健康分體系捧请,提交有錯(cuò)誤的腳本會(huì)被扣計(jì)算健康分凡涩,導(dǎo)致以后提交任務(wù)的優(yōu)先級(jí)被下調(diào)。
(b)使用MaxCompute SQL疹蛉,規(guī)范代碼活箕,預(yù)防預(yù)期外的錯(cuò)誤,并對(duì)代碼運(yùn)算效率進(jìn)行優(yōu)化可款。
2.1 MaxCompute Studio
如上圖育韩,靜態(tài)編譯發(fā)現(xiàn)第一個(gè) insert 語(yǔ)句中的UDF wm_concat函數(shù)參數(shù)錯(cuò)誤。
如上圖筑舅,鼠標(biāo)停止在錯(cuò)誤或者警告上座慰,會(huì)直接提示具體錯(cuò)誤或者警告信息陨舱。如果不修改錯(cuò)誤翠拣,直接提交,會(huì)被 MaxCompute Studio 阻攔游盲。
修改完畢后误墓,再次提交蛮粮,便可以順暢運(yùn)行。
2.2 MaxCompute SQL
基于SQL谜慌,使用MaxCompute SQL然想,規(guī)范代碼,預(yù)防預(yù)期外的錯(cuò)誤欣范,并對(duì)代碼運(yùn)算效率進(jìn)行優(yōu)化:
(a)代碼規(guī)范变泄,如別名,即子查詢(xún)必須要有別名恼琼。建議查詢(xún)都帶別名妨蛹。
(b)預(yù)防預(yù)期外的錯(cuò)誤,如精度問(wèn)題晴竞,Double 類(lèi)型因?yàn)榇嬖诰葐?wèn)題蛙卤,不建議在關(guān)聯(lián)時(shí)候進(jìn)行直接等號(hào)關(guān)聯(lián)兩個(gè) Double 字段。一個(gè)比較推薦的做法是把兩個(gè)數(shù)做下減法噩死,如果差距小于一個(gè)預(yù)設(shè)的值就認(rèn)為是相同颤难,比如 abs(a1- a2) < 0.000000001。
(c)代碼優(yōu)化已维,如分區(qū)裁剪行嗤,對(duì)分區(qū)列指定過(guò)濾條件,使得 SQL 執(zhí)行時(shí)只用讀取表的部分分區(qū)數(shù)據(jù)垛耳,避免全表掃描引起的數(shù)據(jù)錯(cuò)誤及資源浪費(fèi)昂验。
3.TD 實(shí)踐
具體落地可以先從SQL語(yǔ)言及相關(guān)用戶(hù)入手,后期視情況慢慢推廣:
1.代碼樣例的準(zhǔn)備艾扮,結(jié)合日常工作中的常見(jiàn)作業(yè)既琴,總結(jié)提煉幾套常見(jiàn)的代碼樣例和常用語(yǔ)法。
2.規(guī)則庫(kù)的制定泡嘴,包括常見(jiàn)問(wèn)題和開(kāi)源規(guī)范的梳理甫恩,目前規(guī)則可以分為以下幾類(lèi):
(1)語(yǔ)法類(lèi)規(guī)則,如類(lèi)方法的歸屬問(wèn)題酌予,主要由編譯器處理磺箕;
(2)規(guī)范類(lèi)規(guī)則,如表抛虫、目錄的命名規(guī)范松靡,注釋等,不斷總結(jié)+借鑒開(kāi)源規(guī)范建椰;
(3)質(zhì)量類(lèi)規(guī)則雕欺,如參數(shù)檢查、分母0、NULL值等屠列,不斷總結(jié)+借鑒開(kāi)源規(guī)范啦逆;
(4)性能類(lèi)規(guī)則,如并行計(jì)算笛洛、分區(qū)夏志、重復(fù)計(jì)算、大表裁剪等苛让,不斷總結(jié)+借鑒開(kāi)源規(guī)范沟蔑;
(5)其他規(guī)則~
3.產(chǎn)品研發(fā)側(cè)的設(shè)計(jì)和研發(fā),整體流程:
(1)平臺(tái)側(cè)配置好規(guī)則庫(kù)狱杰,
(2)用戶(hù)提交代碼后溉贿,結(jié)合規(guī)則庫(kù)進(jìn)行校驗(yàn),
(2.1)平臺(tái)可以自動(dòng)化處理重要缺陷浦旱,顯示相關(guān)info宇色,任務(wù)提交運(yùn)行,
(2.1.1)感興趣的用戶(hù)可以參考info自我提升颁湖,進(jìn)一步學(xué)習(xí)并反饋規(guī)則給TD規(guī)則庫(kù)宣蠕,形成閉環(huán)不斷優(yōu)化,
(2.1.2)不感興趣的用戶(hù)可以直接忽略?xún)?yōu)化info甥捺,專(zhuān)注業(yè)務(wù)抢蚀,做到無(wú)感體驗(yàn),相關(guān)info記錄留存镰禾,供資深分析師總結(jié)規(guī)則并反饋規(guī)則給TD規(guī)則庫(kù)皿曲,形成閉環(huán)不斷優(yōu)化,
(2.2)平臺(tái)無(wú)法自動(dòng)化處理重要缺陷吴侦,顯示更改tip屋休,任務(wù)被阻斷,
用戶(hù)可以結(jié)合更改tip备韧,并可請(qǐng)教資深的分析師一起協(xié)助修改劫樟,修復(fù)代碼后才可提交,并在此檢驗(yàn)規(guī)則织堂,同時(shí)將規(guī)則反饋給TD規(guī)則庫(kù)叠艳,形成閉環(huán)不斷優(yōu)化,
(3)完成任務(wù)提交易阳,不知不覺(jué)中提升整個(gè)集群任務(wù)的運(yùn)行效率附较,最終實(shí)現(xiàn)盡早、盡快潦俺、無(wú)感解決故障隱患拒课,以節(jié)約時(shí)間徐勃,提高效率,降低出錯(cuò)率捕发。
從長(zhǎng)遠(yuǎn)考慮,將自研和借鑒市場(chǎng)上的SQL Studio很魂,定制化開(kāi)發(fā)扎酷,更加靈活。
綜合考慮DSS需求池和研發(fā)資源的現(xiàn)狀遏匆,短期內(nèi)可能還是:
1.準(zhǔn)備代碼樣例法挨,
2.在實(shí)戰(zhàn)中總結(jié)規(guī)則,結(jié)合開(kāi)源規(guī)范不斷完善規(guī)則庫(kù)幅聘,
3.對(duì)用戶(hù)進(jìn)行規(guī)則庫(kù)和代碼樣例的相關(guān)培訓(xùn)凡纳,并結(jié)合TDU的優(yōu)質(zhì)教育資源,進(jìn)行專(zhuān)項(xiàng)技能提升帝蒿,
備注:相關(guān)培訓(xùn)可以視用戶(hù)的興趣和時(shí)間酌情參與,但最好有幾位資深分析師全程深入學(xué)習(xí),以備在關(guān)鍵時(shí)刻提供相關(guān)指導(dǎo)姆蘸。
4.同時(shí)根據(jù)規(guī)則在平臺(tái)側(cè)封裝相關(guān)API供用戶(hù)使用祝蝠,并逐漸嘗試自動(dòng)化處理。
最后绣张,引用曾鳴老師的一段話(huà)答渔,“未來(lái)創(chuàng)業(yè)很重要的一個(gè)方向就是把傳統(tǒng)上大家認(rèn)為必須由人來(lái)做的服務(wù),把它中間越來(lái)越多的環(huán)節(jié)拆解侥涵,變成可以在線(xiàn)化沼撕、機(jī)器化、智能化完成的任務(wù)芜飘∥癫颍”
個(gè)人認(rèn)為,這也是數(shù)據(jù)工具產(chǎn)品的發(fā)展方向嗦明,復(fù)雜工作簡(jiǎn)單化冲呢,簡(jiǎn)單工作智能化。
以上便是我關(guān)于“CheckStyle”的初步想法招狸,歡迎大家一起探討敬拓。
個(gè)人簡(jiǎn)介:
楚權(quán)(MR.Quan),東北大學(xué)2016屆畢業(yè)生裙戏,TalkingData高級(jí)數(shù)據(jù)產(chǎn)品經(jīng)理乘凸,熱愛(ài)數(shù)據(jù)&產(chǎn)品&技術(shù),不斷挑戰(zhàn)自我累榜。
歡迎交流:
wechat:663512441
簡(jiǎn)書(shū):Mr_Quan营勤,http://www.reibang.com/u/efd08a03829f
woshipm:Mr.Quan灵嫌,http://www.woshipm.com/u/216162
PMCAFF:楚權(quán),https://www.pmcaff.com/user/profile/260103
產(chǎn)品壹佰:楚權(quán)葛作,http://www.chanpin100.com/profile/me