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

MaxCompute:サードパーティのパッケージとイメージのリファレンス

最終更新日:Nov 10, 2025

MaxFrame で Python コードを開発する場合、サードパーティのパッケージやイメージをリファレンスすることがよくあります。MaxFrame は、アップロードされたパッケージやイメージを直接使用して迅速にアクセスできるインターフェイスを提供します。

MaxFrame 開発でサードパーティのパッケージをリファレンスする

  1. サードパーティのパッケージをアップロードします。

    説明

    サードパーティのパッケージの作成の詳細については、「PyODPS 用のサードパーティパッケージを作成する」をご参照ください。

    サードパーティのパッケージを使用する前に、パッケージが Archive リソースとして MaxCompute にアップロードされていることを確認してください。この Topic では、サードパーティパッケージ packages.tar.gz を例として使用します。次のいずれかのメソッドを使用してパッケージをアップロードできます。

    • コードを使用してパッケージをアップロードします。次のコードに例を示します。

      import os
      from odps import ODPS
      
      # ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が AccessKey ID に設定されていることを確認してください。
      # ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が AccessKey Secret に設定されていることを確認してください。
      # AccessKey ID または AccessKey Secret の文字列を直接使用しないでください。
      o = ODPS(
          os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          project='<YOUR-DEFAULT-PROJECT>',
          endpoint='<YOUR-END-POINT>',
      )
      # packages.tar.gz をターゲットパッケージのパスとファイル名に置き換えます。
      o.create_resource("packages.tar.gz", "archive", fileobj=open("packages.tar.gz", "rb"))
      
    • DataWorks を使用してリソースをアップロードします。詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

  2. MaxFrame 開発でサードパーティのパッケージをリファレンスします。詳細については、「自動パッケージングサービス」をご参照ください。

    MaxFrame では、宣言を使用してジョブ開発中にサードパーティのパッケージとファイルを参照できます。これを行うには、次の例に示すように with_resource_libraries モジュールをインポートします。

    from maxframe.udf import with_resource_libraries
    
    @with_resource_libraries("packages.tar.gz", "demo.py")

次の例は、MaxFrame ジョブでサードパーティのパッケージをリファレンスする方法を示しています。この例では、packages.tar.gz パッケージをリファレンスして、test_float_col テストテーブルの列の Population Stability Index (PSI) 値を計算します。

  1. テストテーブル test_float_col とテストデータを準備します。

    CREATE TABLE test_float_col (col1 double);
    INSERT INTO test_float_col VALUES (3.75),(2.51);
  2. MaxFrame コードを記述し、ローカルマシンに demo.py ファイルとして保存します。次のコードに例を示します。

    # test_float_col テストテーブルの col1 列の PSI 値を計算します。
    import os
    from odps import ODPS, options
    from maxframe.session import new_session
    import maxframe.dataframe as md
    from maxframe.config import options
    from maxframe import config
    from maxframe.udf import with_resource_libraries
    
    # サードパーティのパッケージをリファレンスします。
    @with_resource_libraries("packages.tar.gz")
    
    def my_psi(v):
        from scipy.special import psi
        return float(psi(v))
    
    o = ODPS(
          # ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が AccessKey ID に設定されていることを確認してください。
          # ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が AccessKey Secret に設定されていることを確認してください。
          # AccessKey ID または AccessKey Secret の文字列を直接使用しないでください。
          os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          project='your-default-project',
          endpoint='your-end-point'
    )
    # MaxFrame セッションを作成します。
    session = new_session(o)
    df = md.read_odps_table('test_float_col')
    # コードを実行して結果を取得します。
    print(df.col1.map(my_psi).execute().fetch())
    
  3. ローカル MaxFrame クライアントで demo.py ファイルを実行します。次のコマンドに例を示します。

    python demo.py

    次の結果が返されます。

    0    1.182537
    1    0.708048
    Name: col1, dtype: float64

MaxFrame 開発でイメージをリファレンスする

次の例は、MaxFrame ジョブでイメージを使用する方法を示しています。この例では、組み込み scipy イメージをリファレンスして、test_float_col テストテーブルの列の PSI 値を計算します。

  1. テストテーブル test_float_col とテストデータを準備します。CREATE TABLE test_float_col (col1 double); INSERT INTO test_float_col VALUES (3.75),(2.51);

    CREATE TABLE test_float_col (col1 double);
    INSERT INTO test_float_col VALUES (3.75),(2.51);
  2. MaxFrame コードを記述し、ローカルマシンに demo.py ファイルとして保存します。次のコードに例を示します。

    # test_float_col テストテーブルの col1 列の PSI 値を計算するコード。
    import os
    from odps import ODPS, options
    from maxframe.session import new_session
    import maxframe.dataframe as md
    from maxframe.config import options
    from maxframe import config
    
    # 組み込みの scipy イメージをリファレンスします。
    config.options.sql.settings = {
        "odps.session.image": "scipy"
    }
    def my_psi(v):
        from scipy.special import psi
        return float(psi(v))
    
    o = ODPS(
          # ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が AccessKey ID に設定されていることを確認してください。
          # ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が AccessKey Secret に設定されていることを確認してください。
          # AccessKey ID または AccessKey Secret の文字列を直接使用しないでください。
          os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
          os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
          project='your-default-project',
          endpoint='your-end-point'
    )
    # MaxFrame セッションを作成します。
    session = new_session(o)
    df = md.read_odps_table('test_float_col')
    # コードを実行して結果を取得します。
    print(df.col1.map(my_psi).execute().fetch())
  3. ローカル MaxFrame クライアントdemo.py ファイルを実行します。次のコマンドに例を示します。

    python demo.py

    次の結果が返されます。

    0    1.182537
    1    0.708048
    Name: col1, dtype: float64