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

DataWorks:PyODPS ノードでサードパーティパッケージを使用する

最終更新日:Sep 10, 2026

組み込みの PyODPS 機能が複雑なビジネス要件を満たさない場合、Python コードを再利用したり、オープンソースライブラリを使用したりする必要があります。DataWorks では、リソース参照を通じてカスタムスクリプトを読み込む方法、またはカスタムイメージや O&M アシスタントを使用してサードパーティパッケージを統合する方法の 2 つのソリューションを提供しています。このトピックでは、DataWorks の PyODPS ノードでカスタム Python スクリプトを呼び出す方法、またはオープンソースのサードパーティパッケージをインストールして使用する方法について説明し、データ処理機能の拡張を可能にします。

クイック選択

環境と要件に基づいてアプローチを選択してください。

シナリオ

リソースグループタイプ

ソリューション

オープンソースのサードパーティパッケージを使用する

サーバーレスリソースグループ

カスタムイメージを使用してオープンソースパッケージをインストールする

専用スケジューリングリソースグループ

O&M アシスタントを使用してオープンソースパッケージをインストールする

カスタム .py スクリプトファイルのみを使用する

サーバーレスリソースグループ / 専用スケジューリングリソースグループ

カスタム Python リソースを参照する

次の図は、各ソリューションの主なワークフローの概要を示しています。

image

前提条件

開始する前に、次の 2 つの重要な概念を理解して、正しい設定方法を選択してください。

基本概念

  1. ノードタイプ: PyODPS 2 と PyODPS 3

    • PyODPS 2Python 2.7 環境に基づいています。

    • PyODPS 3Python 3.7+ 環境に基づいています。

    • 推奨事項Python 2 の公式サポートは終了しているため、PyODPS 3 の使用を強く推奨します。このトピックでは、PyODPS 3 を主な例として使用します。

  2. リソースグループタイプ: サーバーレスリソースグループ専用スケジューリングリソースグループ

    • サーバーレスリソースグループ (推奨): このリソースグループは弾力的でメンテナンス不要です。カスタムイメージを使用してサードパーティパッケージを管理できます。

    • 専用スケジューリングリソースグループ (非推奨): これはレガシーソリューションです。ECS サーバーを購入して維持する必要があり、リソースを弾力的にスケールできません。O&M アシスタントを使用して依存関係をインストールすることには 多くの制限 があり、環境を破損する可能性があります。

リソースグループタイプの確認

DataWorks コンソールで、ワークスペースの **[ワークスペースの詳細]** ページに移動します。**[リソースグループ]** ページで、**ワークスペース** に関連付けられているリソースグループタイプを確認します。

  • タイプが汎用の場合、サーバーレスリソースグループを使用しています。

  • タイプが データスケジューリング の場合、スケジューリング用の専用リソースグループを使用しています。

カスタムイメージを使用したオープンソースパッケージのインストール

重要

この方法は、サーバーレスリソースグループに適用されます。

このセクションでは、pendulum パッケージを含むカスタム環境を作成するエンドツーエンドの例を示します。その後、PyODPS 3 ノードを使用してこのパッケージを呼び出し、特定のタイムゾーンの現在時刻を取得してフォーマットします。

ステップ1: pendulum ライブラリを含むカスタムイメージの作成

カスタムイメージは、サーバーレスリソースグループの実行環境を定義します。

  1. DataWorks コンソールにログインし、左側のナビゲーションペインで[イメージ管理]をクリックします。

  2. カスタムイメージ タブに移動します。

  3. 左上隅の[イメージの作成]をクリックします。「作成」ページで、以下の主要なパラメーターを設定します。

    パラメータ

    説明

    [イメージ名]

    カスタムイメージの名前を入力します。たとえば、pyodps3_with_pendulum と入力します。

    参照タイプ

    [DataWorks 公式イメージ] を選択します。

    イメージ名/ID

    ドロップダウンリストから、DataWorks 公式イメージ dataworks_pyodps_task_pod を選択します。

    サポートされるタスクタイプ

    [PyODPS 3] タスクタイプを選択します。

    インストールパッケージ

    [Python3] を選択し、ドロップダウンリストからシステム提供の pendulum パッケージを選択します。

    組み込まれていないオープンソースパッケージをインストールする場合は、スクリプトモードを使用して手動でインストールできます。設定方法の詳細については、「カスタムイメージを作成するためのパラメータ」をご参照ください。
    重要

    パブリックインターネットからオープンソースパッケージをインストールするには、サーバーレスリソースグループに関連付けられている VPC に パブリックネットワークアクセスが必要です。

  4. 確認 をクリックしてカスタムイメージを作成します。

  5. [カスタムイメージ] ページで、イメージをテストし、その後デプロイします。イメージは、デプロイする前にテストに合格する必要があります。

  6. 対象のイメージの操作列で、image > [所有ワークスペースの変更]をクリックして、カスタムイメージに所有ワークスペースを関連付けます。

    イメージが正常にデプロイされると、その [デプロイステータス] が [デプロイ済み] に変わり、[操作] 列に [無効化] ボタンが表示されます。[操作] ドロップダウンメニューには、[変更]、[ビルド]、[バージョンを表示]、[イメージを削除] などのオプションも含まれます。

ステップ2: PyODPS 3 ノードの作成と設定

  1. 左側のナビゲーションバーで [データ開発と運用保守] > データ開発 をクリックし、ドロップダウンリストから対象の ワークスペース を選択して、データ開発へ をクリックします。

  2. 既存の ビジネスフロー で、pyodps3_pendulum_test という名前の PyODPS 3 ノードを作成します。

  3. pyodps3_pendulum_test ノードのコードエディターで、次の Python 3 コードを入力します。

    # pendulum パッケージはカスタムイメージにインストールされているため、直接インポートできます。
    import pendulum
    print("サードパーティパッケージ pendulum のテストを開始しています...")
    try:
        # pendulum を使用して、「Asia/Shanghai」タイムゾーンの現在時刻を取得します。
        shanghai_time = pendulum.now('Asia/Shanghai')
        # フォーマットされた時刻とタイムゾーン情報を出力します。
        print(f"'pendulum' パッケージを正常にインポートしました。")
        print(f"上海の現在時刻: {shanghai_time.to_datetime_string()}")
        print(f"対応するタイムゾーン: {shanghai_time.timezone_name}")
        print("\nテストに合格しました! PyODPS ノードはサードパーティパッケージを正常に呼び出しました。")
    except Exception as e:
        print(f"テストに失敗しました。エラーが発生しました: {e}")

ステップ3: テストと結果の確認

  1. ツールバーの ** アイコンをクリックしてコードを実行し、パラメーター ダイアログボックスで、作成したイメージ pyodps3_with_pendulum を選択します。

    重要

    対象イメージが見つからない場合は、イメージが現在のワークスペースに関連付けられていることを確認してください。詳細については、「ステップ1: カスタムイメージの作成」のステップ6をご参照ください。

  2. ページ下部の [実行ログ] を確認します。次の出力は、pendulum パッケージが正常に呼び出されたことを示しています。

    サードパーティパッケージ pendulum のテストを開始しています...
    'pendulum' パッケージを正常にインポートしました。
    上海の現在時刻: 2025-09-27 15:45:00
    対応するタイムゾーン: Asia/Shanghai
    テストに合格しました! PyODPS ノードはサードパーティパッケージを正常に呼び出しました。

ステップ4: PyODPS 3 ノードのデプロイ

テストが完了したら、右側のペインで スケジューリング設定 > リソースプロパティ に移動し、サーバーレスリソースグループを選択して、イメージを、作成した pyodps3_with_pendulum カスタムイメージに設定します。その後、ノードを運用センターにデプロイできます。

O&M アシスタントを使用したオープンソースパッケージのインストール

重要

この方法は、専用スケジューリングリソースグループに適用されるレガシーソリューションであり、現在は推奨されていません。より強力で柔軟なサーバーレスリソースグループへの移行を推奨します。

  1. DataWorks ワークスペースリストにログインし、ページ上部でリージョンを切り替え、対象のワークスペースの操作 列にある詳細 をクリックしてワークスペースの詳細ページに移動します。

  2. 左側のナビゲーションバーで リソースグループ をクリックし、関連付けられたスケジューリング専用リソースグループを見つけ、「操作」列で image > O&M アシスタント をクリックします。

  3. [O&M Assistant] ページで、左上隅の [コマンドの作成] をクリックします。

  4. Python バージョンに対応するコマンドを入力します。

    • Python 3 (PyODPS 3): デフォルトオプションをそのまま使用します。[Python3] パッケージタイプのドロップダウンリストから、pendulum インストールパッケージを選択します。

    • Python 2 (PyODPS 2): [手動入力] モードを選択し、コマンド内容を入力します。

      pip install --upgrade pip
      pip install "pendulum<2.0"
  5. [O&M アシスタント] ページで、「操作」列の [コマンドの実行] をクリックします。コマンドが正常に実行されると、対応する PyODPS ノードで import pendulum を直接使用できます。

カスタム Python リソースの参照

別の .py ファイルから関数を呼び出すだけでよい場合は、次の手順に従います。

  1. Python リソースの作成

    1. データ開発ページで、対象のビジネスフローを右クリックし、リソースの作成 > MaxCompute > Pythonを選択します。

    2. リソースの作成 ダイアログボックスで、リソースの 名前 (たとえば my_utils.py) を入力し、Create をクリックします。

    3. Python リソースエディターで次のコードを入力します。

      # my_utils.py (Python 3 構文)
      def say_hello(name):
          print(f"Hello, {name}! これは my_utils モジュールからです。")
    4. リソースを保存し、サブミットします。

  2. ノードの作成とリソースの参照

    • ターゲットのビジネスフローで、MaxCompute を右クリックし、ノードの作成 > PyODPS 3 を選択して、画面の指示に従ってノードを作成します。

    • ノードで、##@resource_reference{"my_utils.py"} ディレクティブを使用してリソースを参照します。完全なコードは次のとおりです。

      ##@resource_reference{"my_utils.py"}
      import sys
      import os
      # リソースの現在のディレクトリを Python インタープリターの検索パスに追加します。
      sys.path.append(os.path.dirname(os.path.abspath('my_utils.py')))
      # これで、通常のモジュールのようにリソースをインポートして使用できます。
      import my_utils
      my_utils.say_hello("DataWorks")
  3. ノードを実行します。ログに出力「Hello, DataWorks! これは my_utils モジュールからです。」が表示されます。

よくある質問

  • Q: コマンドを使用してパッケージを手動でインストールする場合、カスタムイメージのテストが長時間進まないのはなぜですか?

    • タスクの実行環境がパブリックインターネットからのサードパーティパッケージに依存している場合、サーバーレスリソースグループに関連付けられている VPC にパブリックネットワークアクセスが必要です。詳細については、「リソースグループのパブリックネットワークアクセスを有効にする」をご参照ください。

    • Alibaba Cloud PyPI ミラーなど、別の Python パッケージソースへの切り替えを試してください。Alibaba Cloud ミラーは、パブリックネットワークアクセスを必要としません。

  • Q: サードパーティパッケージのインポートに失敗した場合はどうすればよいですか?

    1. カスタムイメージが正常にデプロイされていることを確認します。

    2. イメージでサポートされているタスクタイプ (PyODPS 2 または PyODPS 3) が、ノードのタイプと一致していることを確認します。

    3. ノードの [プロパティ] で正しいカスタムイメージが選択されていることを確認します。

      パブリックリソースグループは選択できません。
    4. インストールされたパッケージのバージョンが Python バージョンと互換性があるかどうかを確認します。たとえば、pendulum 2.0 以降は Python 2 をサポートしていません。

関連ドキュメント