日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

UDF示例:引用文件資源

本文以在MaxCompute客戶端操作為例,為您介紹如何通過Python UDF引用文件資源。

前提條件

請確認您已完成如下操作:

  • 已安裝并配置MaxCompute客戶端。

    更多安裝并配置MaxCompute客戶端信息,請參見安裝并配置MaxCompute客戶端

  • 已將待引用的文件添加為MaxCompute項目中的資源。

    本文已添加的文件資源示例為test_distcache.txt,包含的數據如下。

    1 a
    2 b
    3 c
    4 d

    更多添加資源操作,請參見添加資源

代碼開發和使用步驟

1. 代碼開發

Python UDF代碼如下,實現從引用的文件資源(例如test_distcache.txt)中返回滿足要求的數據。

from odps.udf import annotate
from odps.distcache import get_cache_file
@annotate('bigint->string')
class DistCacheExample(object):
    def __init__(self):
        cache_file = get_cache_file('test_distcache.txt')
        kv = {}
        for line in cache_file:
            line = line.strip()
            if not line:
                continue
            k, v = line.split()
            kv[int(k)] = v
        cache_file.close()
        self.kv = kv
    def evaluate(self, arg):
        return self.kv.get(arg)

將上述代碼示例保存為PY腳本文件(例如file.py),并放置在MaxCompute客戶端的bin目錄中。

2. 上傳資源和注冊函數

完成UDF代碼開發和調試之后,在MaxCompute客戶端中將資源上傳至MaxCompute并注冊函數。

  1. 執行如下命令,將PY腳本文件上傳為MaxCompute資源。

    add py file.py;

    返回結果如下。

    OK: Resource 'file.py' have been created.

    更多添加資源命令信息,請參見添加資源

  2. 執行如下命令,注冊Python UDF,即注冊函數。

    create function file_udf as 'file.DistCacheExample' using 'file.py, test_distcache.txt';

    其中:

    • file_udf表示注冊的Python UDF名稱,即后續在SQL語句中調用的自定義函數名稱。

    • file.DistCacheExample中,file表示file.py腳本文件的名稱,DistCacheExample為file.py腳本文件中定義的類。

    返回結果如下。

    Success: Function 'file_udf' have been created.

    更多注冊函數信息,請參見注冊函數

3. 使用示例

成功注冊UDF后,執行以下命令,構造測試數據并調用注冊的函數。

--創建測試表。
create table file_table (arg bigint);
--插入數據。
insert into file_table values (1), (4), (15), (123), (7995);
--在SQL語句中調用新注冊的函數,返回文件資源中滿足要求的數據。
select file_udf(arg) from file_table;

返回結果如下。

+-----+
| _c0 |
+-----+
| a   |
| d   |
| NULL |
| NULL |
| NULL |
+-----+