本文以在MaxCompute客戶端操作為例,為您介紹如何通過Python UDF引用文件資源。
前提條件
請確認您已完成如下操作:
已安裝并配置MaxCompute客戶端。
更多安裝并配置MaxCompute客戶端信息,請參見安裝并配置MaxCompute客戶端。
已將待引用的文件添加為MaxCompute項目中的資源。
代碼開發和使用步驟
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并注冊函數。
執行如下命令,將PY腳本文件上傳為MaxCompute資源。
執行如下命令,注冊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 |
+-----+
文檔內容是否對您有幫助?