成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在 MaxCompute UDF 中運(yùn)行 Scipy

kbyyd24 / 386人閱讀

摘要:編寫完成后,將代碼保存為,并在中執(zhí)行此后創(chuàng)建函數(shù)。執(zhí)行創(chuàng)建后,便可以在中執(zhí)行查詢暫不支持,因而需禁用其他如果包依賴了其他包,需要一并上傳并同時(shí)加入到依賴中。

摘要: 新版 MaxCompute Isolation Session 支持 Python UDF。也就是說,Python UDF 中已經(jīng)可以跑二進(jìn)制包。剛才以 Scipy 為例踩了一下坑,把相關(guān)的過程分享出來。

新版 MaxCompute Isolation Session 支持 Python UDF。也就是說,Python UDF 中已經(jīng)可以跑二進(jìn)制包。剛才以 Scipy 為例踩了一下坑,把相關(guān)的過程分享出來。

下載 Scipy 包并上傳資源
首先,從 PyPI 或其他鏡像下載 Scipy 包。你需要下載后綴為“cp27-cp27m-manylinux1_x86_64.whl”的包,其他的包會(huì)無法加載,包括名為“cp27-cp27mu”的包。以下的截圖來自 https://pypi.python.org/pypi/... ,僅有打勾的包可以直接使用:

下載 whl 后,將文件名更改為 scipy.zip。此后,在 MaxCompute Console 中執(zhí)行

add archive scipy.zip;
此后,scipy.zip 即被創(chuàng)建為 MaxCompute Archive 資源。不建議使用其他類型的資源,因?yàn)樵趫?zhí)行時(shí),MaxCompute 會(huì)自動(dòng)解壓 Archive 類型的資源,從而省去手動(dòng)解壓的步驟。

從非 Whl 包生成 Whl 包
如果列出的包中包含 Whl,則可以直接上傳并跳過此步驟。如果列出的包不包含 whl(如手中僅有圖中的 scipy-0.19.0.zip),需要在 Linux 環(huán)境中手動(dòng)編譯并打包為 whl。打包前,需要確保下列命令返回“cp27m”而不是“cp27mu”:

python -c "import pip; print pip.pep425tags.get_abi_tag()"

如果返回值為“cp27mu”,你需要使用 “--enable-unicode=no" 選項(xiàng)編譯一個(gè)可用的 Python 2.7,再使用編譯得到的 Python。如果返回值正確,通常可以在該環(huán)境下使用

python setup.py bdist_wheel

完成,具體請(qǐng)參考各個(gè)包的編譯/安裝說明。

打包完成后,將生成的 whl 包上傳。

編寫和創(chuàng)建 UDF
我們需要編寫一個(gè) UDF 支持計(jì)算 psi。編寫下列代碼:

from odps.udf import annotate
from odps.distcache import get_cache_archive

def include_package_path(res_name):
    import os, sys
    archive_files = get_cache_archive(res_name)
    dir_names = sorted([os.path.dirname(os.path.normpath(f.name)) for f in archive_files
                       if ".dist_info" not in f.name], key=lambda v: len(v))
    sys.path.append(os.path.dirname(dir_names[0]))

@annotate("double->double")
class MyPsi(object):
    def __init__(self):        
        include_package_path("scipy.zip")

    def evaluate(self, arg0):
        from scipy.special import psi
        return float(psi(arg0))

這里有必要解釋一下 include_package_path 這個(gè)函數(shù)。get_cache_archive 返回一個(gè)包含包中所有文件的文件對(duì)象。我們首先取出所有的文件名,此后獲得最短的路徑作為包的路徑,并加入 sys.path。此后,便可以正常 import scipy 這個(gè)包。

需要注意的是,因?yàn)?MaxCompute 會(huì)在執(zhí)行前通過原有的沙箱檢查 UDF 的輸入/輸出,因而 include_package_path 和 import 在函數(shù)外調(diào)用會(huì)報(bào)錯(cuò)。

編寫完成后,將代碼保存為 my_psi.py,并在 MaxCompute Console 中執(zhí)行

add py my_psi.py;

此后創(chuàng)建函數(shù)。在 MaxCompute Console 中輸入

create function my_psi as my_psi.MyPsi using my_psi.py,scipy.zip;
注意在 create function 時(shí),不要忘記加上剛才上傳的包,例如上面的 scipy.zip。

執(zhí)行
創(chuàng)建 UDF 后,便可以在 MaxCompute Console 中執(zhí)行查詢(暫不支持 pypy,因而需禁用 pypy):

set odps.pypy.enabled=false;
set odps.isolation.session.enable = true;
select my_psi(sepal_length) from iris;

其他
如果包依賴了其他 Python 包,需要一并上傳并同時(shí)加入到 UDF 依賴中。

使用 0.7.4 以上的 PyODPS DataFrame 可以簡(jiǎn)化使用二進(jìn)制包的 UDF 的編寫,無需手動(dòng)調(diào)用 include_package_path,具體可見 http://pyodps.readthedocs.io/... 。
原文鏈接

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41748.html

相關(guān)文章

  • MaxCompute Studio使用心得系列6——一個(gè)工具完成整個(gè)Python UDF開發(fā)

    摘要:摘要北京云棲大會(huì)上阿里云發(fā)布了最新的功能,萬眾期待的功能終于支持啦,我怎么能不一試為快,今天就分享如何通過進(jìn)行開發(fā)。注冊(cè)函數(shù)在腳本中編輯試用好了,一個(gè)簡(jiǎn)單完整的通過開發(fā)實(shí)踐分享完成。 摘要: 2017/12/20 北京云棲大會(huì)上阿里云MaxCompute發(fā)布了最新的功能Python UDF,萬眾期待的功能終于支持啦,我怎么能不一試為快,今天就分享如何通過Studio進(jìn)行Python u...

    張遷 評(píng)論0 收藏0
  • 從單租戶IaaS到多租戶PaaS——金融級(jí)別大數(shù)據(jù)平臺(tái)MaxCompute的多租戶隔離實(shí)踐

    摘要:摘要在年云棲大會(huì)北京峰會(huì)的大數(shù)據(jù)專場(chǎng)中,來自阿里云的高級(jí)技術(shù)專家李雪峰帶來了主題為金融級(jí)別大數(shù)據(jù)平臺(tái)的多租戶隔離實(shí)踐的演講。三是運(yùn)行隔離機(jī)制。針對(duì)這一問題,提供了多層隔離嵌套方案以便規(guī)避這種潛在的安全風(fēng)險(xiǎn)。 摘要:在2017年云棲大會(huì)?北京峰會(huì)的大數(shù)據(jù)專場(chǎng)中,來自阿里云的高級(jí)技術(shù)專家李雪峰帶來了主題為《金融級(jí)別大數(shù)據(jù)平臺(tái)的多租戶隔離實(shí)踐》的演講。在分享中,李雪峰首先介紹了基于傳統(tǒng)Iaa...

    beanlam 評(píng)論0 收藏0
  • PyODPS 使用 Python UDF

    摘要:中使用首先,我們需要寫一個(gè)文件,假設(shè)我們就是把某一列按格式放的一列轉(zhuǎn)成格式。這里我們指定了函數(shù)名叫,主類使我們上傳的文件里的類?,F(xiàn)在我們就可以在中調(diào)用這個(gè)了。這樣我們就完成了在中使用的整個(gè)過程。 摘要: PyODPS 中使用 Python UDF 包含兩方面,一個(gè)是直接使用,也就是在 MaxCompute SQL 中使用;一個(gè)是間接的方式,也就是 PyODPS DataFrame,這種...

    evin2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<