国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PyODPS 中使用 Python UDF

evin2016 / 1613人閱讀

摘要:中使用首先,我們需要寫一個文件,假設我們就是把某一列按格式放的一列轉成格式。這里我們指定了函數名叫,主類使我們上傳的文件里的類。現在我們就可以在中調用這個了。這樣我們就完成了在中使用的整個過程。

摘要: PyODPS 中使用 Python UDF 包含兩方面,一個是直接使用,也就是在 MaxCompute SQL 中使用;一個是間接的方式,也就是 PyODPS DataFrame,這種方式你不需要直接寫 Python UDF,而是寫普通的 Python 函數或者類。

點此查看原文:http://click.aliyun.com/m/41092/

PyODPS 中使用 Python UDF 包含兩方面,一個是直接使用,也就是在 MaxCompute SQL 中使用;一個是間接的方式,也就是 PyODPS DataFrame,這種方式你不需要直接寫 Python UDF,而是寫普通的 Python 函數或者類。下面我們分開說明。

作為準備工作,我們需要 ODPS 入口,可以通過直接初始化,或者使用 room 機制 加載。

from odps import ODPS

o = ODPS("your-access-id", "your-access-key", "your-project")

MaxCompute SQL 中使用 Python UDF

首先,我們需要寫一個 Python 文件,假設我們就是把某一列按 csv 格式放的一列轉成 json 格式。

import json

from odps.udf import annotate

@annotate("string->string")
class Transform(object):
    def evaluate(self, x):
        columns = list("abc")
        d = dict(zip(columns, x.split(",")))
        return json.dumps(d)

假設這個文件叫 my.py,接下來我們就需要創建 py 資源。

r = o.create_resource("csv_to_json.py", "py", fileobj=open("my.py"))

fileobj 參數也可以是 str 類型,就是表示文件的內容

接著我們就可以創建 Python UDF 了。

o.create_function("csv_to_json", class_type="csv_to_json.Transform", resources=[r])

這里我們指定了函數名叫 csv_to_json,主類使我們上傳的 csv_to_json.py 文件里的 Transform 類。

現在我們就可以在 MaxCompute SQL 中調用這個 UDF 了。

o.execute_sql("select csv_to_json(raw) from pyodps_test_udf")

這樣我們就完成了在 PyODPS 中使用 MaxCompute SQL + Python UDF 的整個過程。

PyODPS DataFrame

對于 PyODPS DataFrame 來說,用戶只需要寫普通的 Python 函數或者類,在函數或者類里,甚至可以讀取全局變量,這樣給開發帶來了極大的方便。

和上面的例子目標相同,我們定義一個 transform 函數即可。然后我們對于 DataFrame 的一列調用 map 方法來應用這個函數。

passed_columns = list("abc")  # 可以從數據庫中讀取或者寫死

def transform(x):
    import json
    d = dict(zip(passed_columns, x.split(",")))
    return json.dumps(d)

df.raw.map(transform)
In [30]: df
     raw
0  1,2,3
1  4,5,6
2  7,8,9

In [31]: df.raw.map(transform)
                              raw
0  {"a": "1", "c": "3", "b": "2"}
1  {"a": "4", "c": "6", "b": "5"}
2  {"a": "7", "c": "9", "b": "8"}

實際上,PyODPS DataFrame 在用 MaxCompute 執行的時候,也會創建 Python UDF 來實現這個功能,但用戶不需要去創建文件、資源和函數這些過程,一切都是 Python 原生函數和類,整個過程相當順暢。

另外可以看到,在上面的 my.py 里,我們也是定義了一個 columns 參數的,而如果這個參數是通過變量傳進去的話,在 Python UDF 里非常麻煩,可能常常需要用一些 tricky 的方法,比如寫到某個文件資源,然后在 UDF 里讀取之類的。而對于 DataFrame 來說,完全沒有這個問題,我們可以自由讀取全局變量。

不過要注意的是,這個全局變量是被序列化到各個機器上的,所以你修改它不會全局生效。

好了,還有什么問題可以隨時和我們取得聯系。

文檔:http://pyodps.readthedocs.io/...
代碼:https://github.com/aliyun/ali... ,歡迎提 issue 和 merge request

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41326.html

相關文章

  • PyODPS 使用 Python UDF

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

    jcc 評論0 收藏0
  • MaxCompute Studio使用心得系列6——一個工具完成整個Python UDF開發

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

    張遷 評論0 收藏0
  • 在 MaxCompute UDF 運行 Scipy

    摘要:編寫完成后,將代碼保存為,并在中執行此后創建函數。執行創建后,便可以在中執行查詢暫不支持,因而需禁用其他如果包依賴了其他包,需要一并上傳并同時加入到依賴中。 摘要: 新版 MaxCompute Isolation Session 支持 Python UDF。也就是說,Python UDF 中已經可以跑二進制包。剛才以 Scipy 為例踩了一下坑,把相關的過程分享出來。 新版 MaxCo...

    kbyyd24 評論0 收藏0
  • PyODPS開發的最佳實踐

    摘要:摘要支持用來對對象進行操作,它提供了來用類似的接口進行大規模數據分析以及預處理,并且可以用模塊來執行機器學習算法?,F在為了讓大家能更好地使用,我們總結開發過程中的最佳實踐,來讓大家更高效地開發程序。 摘要: PyODPS支持用 Python 來對 MaxCompute 對象進行操作,它提供了 DataFrame API 來用類似 pandas 的接口進行大規模數據分析以及預處理,并且可...

    hellowoody 評論0 收藏0

發表評論

0條評論

evin2016

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<