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

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

最終更新日:Jun 22, 2026

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

クイックセレクション

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

シナリオ

リソースグループタイプ

ソリューション

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

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

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

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

運用保守アシスタントを使用したオープンソースパッケージのインストール

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

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

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

以下の図は、各ソリューションの主なワークフローの概要です。

前提条件

開始する前に、以下の 2 つの基本概念を理解し、適切な設定方法を選択してください。

基本概念

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

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

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

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

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

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

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

リソースグループタイプの特定

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

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

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

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

重要

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

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

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

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

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

  2. Custom Image タブに移動します。

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

    パラメーター

    説明

    Image Name

    カスタムイメージの名前を入力します。例:pyodps3_with_pendulum

    参照タイプ

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

    イメージ名/ID

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

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

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

    インストールパッケージ

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

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

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

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

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

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

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

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

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

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

  3. pyodps_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. ツールバーの ** アイコンをクリックしてコードを実行し、Parameter ダイアログボックスで、作成したイメージ pyodps3_with_pendulum を選択します。

    重要

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

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

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

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

テストが完了したら、右側のペインで Scheduling > Resource Group に移動します。ご利用のサーバーレスリソースグループを選択し、イメージを作成したカスタムイメージ pyodps3_with_pendulum に設定します。その後、ノードをオペレーションセンターにデプロイできます。

運用保守アシスタントを使用したオープンソースパッケージのインストール

重要

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

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

  2. 左側のナビゲーションバーで Resource Group をクリックし、関連付けられている専用スケジューリングリソースグループを見つけ、[アクション] 列で image > O&M Assistant をクリックします。

  3. [運用保守アシスタント] ページで、左上隅の [コマンドの作成] をクリックします。

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

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

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

      pip install --upgrade pip
      pip install "pendulum<2.0"
  5. [運用保守アシスタント] ページで、[アクション] 列の [コマンドの実行] をクリックします。コマンドが正常に実行された後、対応する PyODPS ノードで直接 import pendulum を使用できます。

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

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

  1. Python リソースの作成

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

    2. Create Resource ダイアログボックスで、リソースの Name を入力します (例:my_utils.py)。そして Create をクリックします。

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

      # my_utils.py (Python 3 構文)
      def say_hello(name):
          print(f"こんにちは、{name}!これは my_utils モジュールからです。")
    4. リソースを保存して送信します。

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

    • 対象のビジネスフローで MaxCompute を右クリックし、Create Node > 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. ノードを実行します。ログに "こんにちは、DataWorks!これは my_utils モジュールからです。" という出力が表示されます。

よくある質問

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

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

    • https://mirrors.aliyun.com/pypi/simple/ などの別の Python パッケージソースに切り替えてみてください。Alibaba Cloud ミラーはパブリックネットワークアクセスを必要としません。

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

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

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

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

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

関連ドキュメント