DataWorks では、シェルノードで Python スクリプトを実行できます。このトピックでは、共通シェルノードと EMR Shell ノードで Python 2 および Python 3 スクリプトを実行する方法について説明します。
背景
DataWorks では、Python スクリプトをリソースとしてアップロードできます。その後、共通シェルノードまたは EMR Shell ノードで Python 2 または Python 3 のインタープリターパスを指定し、アップロードしたリソースを参照してスクリプトを実行できます。
前提条件
-
EMR Shell ノードを使用するための前提条件を満たしていること。詳細については、「EMR Shell ノードを使用するための前提条件」をご参照ください。
-
共通シェルノードを使用するための前提条件を満たしていること。詳細については、「共通シェルノードを使用するための前提条件」をご参照ください。
-
Python スクリプトでサードパーティパッケージが必要な場合は、リソースグループで環境を準備する必要があります。方法はリソースグループのタイプによって異なります。
-
サーバーレスリソースグループ (推奨):イメージ管理を使用してサードパーティパッケージをインストールします。詳細については、「カスタムイメージ」をご参照ください。
-
専用スケジューリングリソースグループ:O&M Assistant を使用してサードパーティパッケージをインストールします。詳細については、「O&M Assistant」をご参照ください。
説明サードパーティパッケージを作成する際は、パッケージタイプが
Python 2とPython 3の両方をサポートしていることを確認してください。 -
使用制限
-
EMR Shell ノードの使用制限については、「EMR Shell ノードの使用制限」をご参照ください。
-
共通シェルノードの使用制限については、「共通シェルノードの使用制限」をご参照ください。
シェルノードでの Python スクリプトの実行
DataWorks では、共通シェルノードまたは EMR Shell ノードからリソースを参照して Python スクリプトを実行できます。インタープリターパスは Python のバージョンによって異なります。例:
-
Python 2:
python xx.py -
Python 3:
/home/tops/bin/python3 xx.py
共通シェルノード
-
リソースの作成
-
DataStudio ページへの移動
DataWorks コンソールにログインします。対象のリージョンに切り替え、左側メニューで をクリックします。ドロップダウンリストから対象のワークスペースを選択し、データ開発へ をクリックします。
-
MaxCompute Python リソースの作成
DataStudio ページで、対象のワークフローを右クリックし、リソースの作成 を選択します。MaxCompute ディレクトリで、リソースタイプとして Python を選択し、
mc.pyという名前のリソースを作成します。説明リソース名
mc.pyは一例です。ビジネス要件に基づいて名前を指定できます。 -
MaxCompute Python リソースの編集
リソースの設定ページで、コードを編集します。コード例:
Python 3
print('This is a test text')Python 2
print "This is a test text" -
と
をクリックして、リソースを保存し、コミットします。
-
-
リソースの参照
-
共通シェルノードの作成
DataStudio ページで、対象のワークフローを右クリックし、ノードの作成 を選択します。汎用 ディレクトリで、シェル を選択します。
-
リソースの参照
共通シェルノードの編集ページで、 ノード配下で、保留中の リソースのリファレンス
mc.pyを見つけ、右クリックして リソースのリファレンス を選択します。これで、リソースがコードエディターで参照されます。
##@resource_reference{"mc.py"} mc.py
-
-
結果の検証
Python 3
-
共通シェルノードの編集
共通シェルノードで、スクリプト名の前に Python 3 のインタープリターパスを追加します。
##@resource_reference{"mc.py"} /home/tops/bin/python3 mc.py -
アイコンをクリックし、リソースグループとカスタムイメージを選択して、タスクを実行します。################################# End run custom-script. ################################## This is a test text 2024-10-21 17:33:18 INFO ====================================================================== 2024-10-21 17:33:18 INFO Exit code of the Shell command 0 2024-10-21 17:33:18 INFO --- Invocation of Shell command completed --- 2024-10-21 17:33:18 INFO Shell run successfully! 2024-10-21 17:33:18 INFO Current task status: FINISH 2024-10-21 17:33:18 INFO Cost time is: 2.628s
Python 2
-
共通シェルノードの編集
共通シェルノードで、スクリプト名の前に Python 2 のインタープリターパスを追加します。
##@resource_reference{"mc.py"} python mc.py -
アイコンをクリックし、リソースグループとカスタムイメージを選択して、タスクを実行します。
-
EMR Shell ノード
-
リソースの作成
-
DataStudio ページへの移動
DataWorks コンソールにログインします。対象のリージョンに切り替え、左側メニューで をクリックします。ドロップダウンリストから対象のワークスペースを選択し、データ開発へ をクリックします。
-
EMR File リソースの作成
DataStudio ページで、対象のワークフローを右クリックし、リソースの作成 を選択します。EMR ディレクトリで、[ファイル] を選択します。ストレージパス を選択し、クリックしてアップロード をクリックしてローカルから
emr.pyスクリプトをアップロードします。スクリプトの内容例:Python 3
print('This is a test text')Python 2
print "This is a test text"説明リソース名
emr.pyは一例です。ビジネス要件に基づいて名前を指定できます。 -
をクリックして、リソースをコミットします。
-
-
リソースの参照
-
EMR Shell ノードの作成
DataStudio ページで、対象のワークフローを右クリックし、ノードの作成 を選択します。EMR ディレクトリで、EMR シェル を選択します。
-
EMR File リソースの参照
EMR Shell ノードの設定ページで、 の下にある
emr.pyリソースを見つけます。リソースを右クリックし、リソースのリファレンス を選択します。これで、リソースがコードエディターで参照されます。
##@resource_reference{"emr.py"} emr.py
-
-
結果の検証
Python 3
-
EMR Shell ノードの編集
EMR Shell ノードで、スクリプト名の前に Python 3 のインタープリターパス
/home/tops/bin/python3を追加します。##@resource_reference{"emr.py"} /home/tops/bin/python3 emr.py -
アイコンをクリックし、リソースグループとカスタムイメージを選択して、タスクを実行します。>>> [2024-10-21 17:51:29][INFO ][CommandExecutor ]: Process start to execute... Process Output>>> This is a test text >>> [2024-10-21 17:51:29][INFO ][CommandExecutor ]: Process is exited with exit value 0 >>> [2024-10-21 17:51:29][INFO ][CommandExecutor ]: Command state update to COMPLETED >>> [2024-10-21 17:51:29][INFO ][CommandExecutor ]: Process execute finished >>> [2024-10-21 17:51:29][INFO ][EmrDccJobSubmitter ]: Job Completed, status=0 2024-10-21 17:51:29 INFO ============================================================ 2024-10-21 17:51:29 INFO Exit code of the Shell command 0 2024-10-21 17:51:29 INFO --- Invocation of Shell command completed --- 2024-10-21 17:51:29 INFO Shell run successfully! 2024-10-21 17:51:29 INFO Current task status: FINISH 2024-10-21 17:51:29 INFO Cost time is: 17.667s
Python 2
-
EMR Shell ノードの編集
EMR Shell ノードで、スクリプト名の前に Python 2 のインタープリターパス
pythonを追加します。##@resource_reference{"emr.py"} python emr.py -
アイコンをクリックし、リソースグループとカスタムイメージを選択して、タスクを実行します。
-