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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

浅谈PyODPS

發(fā)布時間:2024/8/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈PyODPS 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要: 在我看來,PyODPS就是阿里云上的Python。值得注意的是,這里的定語“阿里云上的”一定不能精簡掉,因為PyODPS不等于單機(jī)版的Python!

點(diǎn)此查看原文

目錄
我眼中的PyODPS
安裝和升級PyODPS版本
PyODPS的牛刀小試
未來更精彩

1. 我眼中的PyODPS

簡單來說,PyODPS就是在MaxCompute中用編程語言的方式對存儲在阿里云DataWorks上的數(shù)據(jù)表作數(shù)據(jù)預(yù)處理和機(jī)器學(xué)習(xí)的Python API。好像還是有點(diǎn)啰嗦,再精簡一下,PyODPS就是阿里云上的Python。值得注意的是,這里的定語“阿里云上的”一定不能精簡掉,因為PyODPS不等于單機(jī)版的Python!就像是在Spark平臺上的PySpark不等于單機(jī)版的Python一樣。在表面上看,一個很大的區(qū)別就是單機(jī)版的Python語言只能在單機(jī)上做數(shù)據(jù)處理和機(jī)器學(xué)習(xí),但是PyODPS和PySpark一樣,都是在集群上做數(shù)據(jù)處理和機(jī)器學(xué)習(xí)的。而我更愿意從編程語言的角度去看待PyODPS,就像Clojure, Common Lisp, Elisp, Scheme等被稱為是Lisp編程語言的不同方言一樣,我更喜歡把PyODPS和PySpark理解成是Python的方言。雖然這樣理解很不嚴(yán)謹(jǐn),因為畢竟PyODPS和PySpark都分別需要在連接阿里云的本地PC和Spark平臺中的各節(jié)點(diǎn)上預(yù)先安裝Python。之所以突出強(qiáng)調(diào)這一不同點(diǎn),就是想讓大家提前留意到在使用PyODPS處理阿里云上的數(shù)據(jù)表和建模時,很多編程的語法是與單機(jī)版Python不同的。例如下面這樣一個讀取本地文件的簡單使用場景中,PyODPS與單機(jī)版Python的語法就不相同。

使用單機(jī)版Python讀取本地文件

使用PyODPS讀取本地文件

這只是一個很簡單的區(qū)別,在實際的工作中還會有許多語法上不同的地方,等待大家去發(fā)現(xiàn),去體會。不過先要有將PyODPS與單機(jī)版Python區(qū)分開的意識,有了這樣的意識,在上云過程中,如果將之前本地機(jī)器上處理數(shù)據(jù)庫或數(shù)據(jù)表的單機(jī)版Python代碼移植進(jìn)PyODPS中,輸出結(jié)果出現(xiàn)異常或者發(fā)生報錯時,就會考慮先從代碼語法層面去排查問題,之后再查找ETL等其他可能的原因。而且有了這樣的意識之后,也會自覺編寫符合PyODPS語法的代碼,從而更加有效的利用MaxCompute卓越的計算性能。

提起與底層平臺計算性能相關(guān)話題的時候,我總是感觸良多。按照我上述不太嚴(yán)謹(jǐn)?shù)恼f法,PyODPS與PySpark雖然都能稱作是Python的兩門方言,但是他們所依托的平臺真的是有親娘跟后媽的天壤之別!我由于工作需要,所以在阿里云上的項目和本地集群的項目都有參與,才讓我有了親娘和后媽這兩種反差很大的用戶體驗。

還是先從讓人心情愉悅的這個說起吧。PyODPS,我們的主角,阿里云的MaxCopute對PyODPS來說,簡直就像親娘一樣,無微不至的關(guān)懷,全心全意的支持。使用PyODPS的感覺就是一個字:省心!只要你連接阿里云的這臺PC上預(yù)先安裝了Python,無論你安裝的是Python2還是Python3,只要使用命令行終端,輸入“pip install pyodps”命令便可安裝PyODPS。之后在你喜歡使用的任意一款Python IDE中(我比較喜歡的是Jupyter Notebook)輸入以下命令就可以直接使用MaxCompute平臺了。一切就是這么自然!

from odps import ODPS o = ODPS(access_id='$$$$$$$$$$$$$$ ', secret_access_key='*********************', project='xxx', end_point='https://service.odps.aliyun.com/api')

而且PyODPS的版本更新完全向下兼容,只要在新版本推出之后,用本地PC的命令行終端,輸入“pip install -U pyodps”命令更新版本就行了。完全不用考慮任何版本兼容問題!而且PyODPS的操作指南也會在以下網(wǎng)址同步更新。真的是省時、省力又省心!
http://pyodps.readthedocs.io/zh_CN/latest/index.html

那么,PySpark的用戶體驗又是怎樣的呢?一句話:小孩沒娘,說來話長……先從版本說起吧,從各家企業(yè)使用服務(wù)器的Linux操作系統(tǒng)開始,版本就開始各不相同了,單就CentOS操作系統(tǒng)來說,我見過的企業(yè)就有用CentOS6.4,CentOS6.5,CentOS6.6和CentOS7.2的,這些系統(tǒng)自帶的Python2和jdk的版本也都不相同,在拿到這些系統(tǒng)之后,第一件事就是升級jdk到j(luò)dk8和將Python2.x升級到Python2.7.13。之后就是選擇Hadoop,Spark,Zookeeper,Hive,HBase,Kafka等組件以及Zeppelin等Notebook的版本。

選擇完這一大堆組件的版本之后,就開始了安裝部署、更改配置、更新依賴包的慢慢征途了。這期間要天天纏著谷哥和度娘問各種各樣的部署、配置和依賴問題,而且經(jīng)常要在各種回答中反復(fù)試錯N遍之后才能找到一個問題的正解。單就一個在Zeppelin Notebook運(yùn)行PySpark時出現(xiàn)空指針報錯的問題,就耗費(fèi)了我好幾天的時間,而且到現(xiàn)在還沒有徹底解決。怎一個心酸了得……

經(jīng)過了漫長的平臺搭建之路,終于到了PySpark登臺亮相的時候了,結(jié)果這時才發(fā)現(xiàn),用PySpark在Spark這個后媽的平臺上工作,還是前路坎坷。就連Spark官網(wǎng)上的PySpark代碼,都時常有跑不通的情況發(fā)生。我還記得當(dāng)時要把從HBase中讀取的RDD格式數(shù)據(jù)轉(zhuǎn)換成DataFrame時,官網(wǎng)上的PySpark語句是跑不通的,在谷哥和度娘上查到的語句也都跑不通,最后我花了大概兩天的時間才把這個功能跑通,當(dāng)時那種深深的絕望和絕處逢生的喜悅,讓我至今仍記憶猶新。單是Spark官網(wǎng)上PySpark代碼跑不通的問題,我還可以理解為可能是由于版本不兼容問題造成的。可是之后這個問題,就真的是明目張膽的后媽行為了。到了Spark的Datasets數(shù)據(jù)結(jié)構(gòu),以及圖計算部分的GraphX,完全拋棄了PySpark,就只剩下她的親兒子Scala了。這還能不能過了?

每當(dāng)這個時候,我都會想起和PyODPS一同奮戰(zhàn)的崢嶸歲月。只要兩句話,他就會把整個MaxCompute集團(tuán)都拉過來跟你一起干,在你迷茫或找不準(zhǔn)方向的時候,釘釘群(群名稱: PyODPS 技術(shù)支持,群號: 11701793)里的專家和軍師們會為你指點(diǎn)迷津,與你一同并肩在PB甚至是TB量級的各種海量數(shù)據(jù)戰(zhàn)場上殺出一條血路!一條勝利之路!這,就是我眼中的PyODPS!

2. 安裝和升級PyODPS版本

2-1. 安裝
PyODPS對Python2和Python3版本都是兼容的。這里我推薦安裝Anaconda的Python2或者Python3,因為安裝Anaconda時,會默認(rèn)安裝許多Python常用的第三方庫,免去你后續(xù)查找和安裝各個第三方庫的煩惱,而且Anaconda中安裝的Jupyter Notebook正是我使用PyODPS時非常順手的編輯器,另外Anaconda的Spyder也是非要好用的Python代碼編輯器。

使用命令行終端,輸入“pip install pyodps”命令即可完成安裝。如下圖所示。

2-2. 升級
使用命令行終端,輸入“pip install -U pyodps”即可完成升級。如下圖所示。

3. PyODPS的牛刀小試

當(dāng)數(shù)據(jù)表存儲到DataWorks之后,PyODPS就可以對表中的數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理了。這里以一份1993年Auto MPG Data Set開源數(shù)據(jù)集為例,做一個簡單的Demo。(此數(shù)據(jù)集的下載地址為:http://archive.ics.uci.edu/ml/datasets/Auto+MPG)

前提是我們已經(jīng)將此數(shù)據(jù)集導(dǎo)入到DataWorks當(dāng)中,之后操作PyODPS做數(shù)據(jù)處理和機(jī)器學(xué)習(xí)的具體姿勢如下:

3-1. 通過PyODPS,從DataWorks中讀入數(shù)據(jù)表,并轉(zhuǎn)換成DataFrame格式。如下圖所示。從圖中我們可以看到,使用的是最新版0.7.13版本的PyODPS,并且讀入的數(shù)據(jù)表有398條記錄。

3-2. 查看數(shù)據(jù)表。如下兩圖所示。從這兩張圖中,我們可以看到這張表共有9列字段,并且在“horsepower”字段中出現(xiàn)了以問號填充的臟數(shù)據(jù)。這是我們要首先去除掉的。

3-3. 去除“horsepower”字段中的問號,并查看處理臟數(shù)據(jù)后DataFrame的各字段類型。如下圖所示。這里,在查看字段類型時,發(fā)現(xiàn)由于問號臟數(shù)據(jù)的出現(xiàn),導(dǎo)致“horsepower”字段的類型目前為“string”類型。不過也不用著急將這個字段變回整數(shù)類型,可以往下再做一些其他的數(shù)據(jù)處理工作,如果發(fā)現(xiàn)有其他字段也需要調(diào)整類型的時候,可以在訓(xùn)練模型之前,一并處理。


3-4. 分組、聚合、排序操作。如下圖所示。這里是按照一輛汽車安裝汽缸的數(shù)量進(jìn)行分組;并按照不同汽缸個數(shù),求汽車燃油效率(以耗費(fèi)一加侖汽油行駛的英里數(shù)作為表征,即mpg字段)的最大值和最小值,以及對裝有不同汽缸數(shù)量的汽車進(jìn)行計數(shù);最后按照單輛汽車汽缸的個數(shù)進(jìn)行降序排列。從下圖的輸出結(jié)果中可以看到,并不是汽缸的數(shù)量越多,燃油效率就越高,裝有4汽缸汽車的燃油效率要高于裝有8汽缸的汽車。并且,此表中裝有4汽缸和8汽缸的數(shù)據(jù)記錄較多,其他3款的數(shù)據(jù)記錄偏少。由此可知,我們可以將汽缸數(shù)量為3,5,6的數(shù)據(jù)記錄去除,將此表構(gòu)造成可用于二分類算法模型使用的數(shù)據(jù)表。

3-5. 依次去除汽缸數(shù)量為3,5,6的數(shù)據(jù)記錄,并驗證剩余數(shù)據(jù)記錄條數(shù)。如下圖所示。

3-6. 將“horsepower”字段類型裝換為整數(shù)型,并去除字符串類型字段car_name。如下圖所示。

3-7. 設(shè)置字段連續(xù)性并標(biāo)注標(biāo)簽字段。如下圖所示。


3-8. 歸一化,并劃分訓(xùn)練集和測試集。如下圖所示。

3-9. 檢查訓(xùn)練集和測試集的字段類型及屬性標(biāo)識。如下圖所示。


3-10. 使用訓(xùn)練集訓(xùn)練邏輯回歸模型,并用此模型對測試集進(jìn)行預(yù)測。如下圖所示。

3-11. 查看邏輯回歸模型對測試集的預(yù)測結(jié)果及評分。如下圖所示。

3-12. 計算此邏輯回歸模型的評分及混淆矩陣。如下3圖所示。




至此,一輪簡單的使用PyODPS進(jìn)行數(shù)據(jù)處理及機(jī)器學(xué)習(xí)的完整過程就演示完畢了。這里要說明的一點(diǎn)是,雖然這個模型把測試集中91條記錄全部預(yù)測正確了,但是這并不是個好消息,反而暴露出由于數(shù)據(jù)樣本過少而導(dǎo)致這個模型存在嚴(yán)重的過擬合現(xiàn)象。不過這只是一個簡單地Demo,重在演示使用PyODPS的姿勢,而且我個人賬號中的余額也不多,就不再增加數(shù)據(jù)樣本了。值得注意的是,在實際的工作中,訓(xùn)練模型所使用的樣本數(shù)據(jù)的數(shù)量和質(zhì)量是非常重要的,而數(shù)據(jù)預(yù)處理和特征工程才決定著算法模型上限的關(guān)鍵步驟。在數(shù)據(jù)處理這部分,PyODPS依托于MaxCompute平臺強(qiáng)大的計算性能,就體現(xiàn)出非常大的優(yōu)勢啦。

4. 未來更精彩

啰嗦了這么多,希望大家通過這一輪簡單的演示,能對PyODPS的數(shù)據(jù)處理能力有一個大概的印象,在以后的工作中,能日漸熟練的使用它來處理你的海量數(shù)據(jù)。

2017年12月20日,在北京云棲大會上,阿里云MaxCompute發(fā)布了最新的功能Python UDF,目前已經(jīng)進(jìn)入公測階段(詳情見此鏈接https://yq.aliyun.com/articles/292672)。隨著即將到來的Python UDF在MaxComputer平臺上的全面開放,我相信PyODPS會在阿里云上的綻放出更加耀眼的光芒,將成為你在阿里云上不可多得的得力助手!

貼心的操作指南也已經(jīng)同步上線,教大家如何在PyODPS中使用Python UDF。詳見如下網(wǎng)址:https://yq.aliyun.com/articles/292672

此時,你已經(jīng)站在PyODPS的大門口,門后就是阿里云MaxCompute的繽紛世界。我突然想套用papi醬的一句名言,就是:……

你還不推一下啊!

總結(jié)

以上是生活随笔為你收集整理的浅谈PyODPS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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