すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:例: ファイルリソースの参照

最終更新日:Jan 06, 2025

このトピックでは、MaxComputeクライアントでPythonのユーザー定義関数 (UDF) を使用してファイルリソースを参照する方法について説明します。

前提条件

次の要件が満たされていることを確認してください。

  • MaxComputeクライアントがインストールされ、設定されます。

    MaxComputeクライアントのインストールと設定方法の詳細については、「MaxComputeクライアントのインストールと設定」をご参照ください。

  • 参照するファイルは、リソースとしてMaxComputeプロジェクトに追加されます。

    この例では、test_distcache.txtファイルがリソースとしてMaxComputeプロジェクトに追加されます。 ファイルには次のデータが含まれています。

    1 a
    2 b
    3 c
    4 d

    リソースの追加方法の詳細については、「リソースの追加」をご参照ください。

開発と使用手順

1. UDFを書く

次のサンプルコードは、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)

上記のサンプルコードをPythonスクリプトとして保存し、MaxComputeクライアントのbinディレクトリにPythonスクリプトを保存します。 この例では、Pythonスクリプトの名前はfile.pyです。

2. リソースのアップロードとUDFの作成

UDFコードを開発およびデバッグした後、MaxComputeクライアントのMaxComputeにリソースをアップロードし、UDFを作成します。

  1. 次のコマンドを実行して、PythonスクリプトファイルをリソースとしてMaxComputeに追加します。

    add py file.py;

    次の応答が返されます。

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

    MaxComputeにリソースを追加するために使用できるコマンドの詳細については、「リソースの追加」をご参照ください。

  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.

    UDFの作成方法の詳細については、「UDFの作成」をご参照ください。

3. UDFを使用するUse the UDF

UDFの作成後、次のコマンドを実行してテストデータを作成し、UDFを呼び出します。

-- Create a test table. 
create table file_table (arg bigint);
-- Insert data into the table. 
insert into file_table values (1), (4), (15), (123), (7995);
-- Call the created function in the SQL statement to obtain the data that meets the specific requirements from the file resource. 
select file_udf(arg) from file_table;

次の応答が返されます。

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