EMR Serverless での Python ライブラリの使用 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EMR Serverless での Python ライブラリの使用

Amazon EMR Serverless アプリケーションで PySpark ジョブを実行すると、さまざまな Python ライブラリを依存関係としてパッケージ化できます。これを行うには、ネイティブの Python 機能を使用するか、仮想環境を構築するか、Python ライブラリを使用するように PySpark ジョブを直接設定できます。このページでは、各アプローチについて説明します。

ネイティブ Python 機能の使用

以下の設定を行うと、 PySpark を使用して Spark エグゼキューターに Python ファイル (.py)、zip 化された Python パッケージ (.zip)、および Egg ファイル (.egg) をアップロードできます。

--conf spark.submit.pyFiles=s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/<.py|.egg|.zip file>

PySpark ジョブに Python 仮想環境を使用する方法の詳細については、 PySpark 「ネイティブ機能の使用」を参照してください。

Python 仮想環境の構築

PySpark ジョブに複数の Python ライブラリをパッケージ化するには、分離された Python 仮想環境を作成できます。

  1. Python 仮想環境を構築するには、次のコマンドを使用します。次の例では、 パッケージscipyと パッケージを仮想環境パッケージmatplotlibにインストールし、アーカイブを Amazon S3 の場所にコピーします。

    重要

    EMR Serverless で使用するのと同じバージョンの Python、つまり Amazon EMRリリース 6.6.0 用の Python 3.7.10 を持つ類似の Amazon Linux 2 環境で、次のコマンドを実行する必要があります。Dockerfile の例は、EMRServerless Samples GitHub リポジトリにあります。

    # initialize a python virtual environment python3 -m venv pyspark_venvsource source pyspark_venvsource/bin/activate # optionally, ensure pip is up-to-date pip3 install --upgrade pip # install the python packages pip3 install scipy pip3 install matplotlib # package the virtual environment into an archive pip3 install venv-pack venv-pack -f -o pyspark_venv.tar.gz # copy the archive to an S3 location aws s3 cp pyspark_venv.tar.gz s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/ # optionally, remove the virtual environment directory rm -fr pyspark_venvsource
  2. Python 仮想環境を使用するようにプロパティを設定した Spark ジョブを送信します。

    --conf spark.archives=s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/pyspark_venv.tar.gz#environment --conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=./environment/bin/python --conf spark.executorEnv.PYSPARK_PYTHON=./environment/bin/python

    元の Python バイナリを上書きしない場合、前述の設定シーケンスの 2 番目の設定は になることに注意してください--conf spark.executorEnv.PYSPARK_PYTHON=python

    PySpark ジョブに Python 仮想環境を使用する方法の詳細については、「Virtualenv の使用」を参照してください。Spark ジョブを送信する方法のその他の例については、「」を参照してくださいSpark ジョブ

Python ライブラリを使用するように PySpark ジョブを設定する

Amazon EMRリリース 6.12.0 以降では、追加のセットアップPyArrowなしで、pandas 、、 NumPyなどの一般的なデータサイエンス Python ライブラリを使用するようにEMRサーバーレス PySparkジョブを直接設定できます。

次の例は、ジョブの各 Python ライブラリを PySparkパッケージ化する方法を示しています。

NumPy

NumPy は、数学、ソート、ランダムシミュレーション、基本統計のための多次元配列とオペレーションを提供する科学コンピューティング用の Python ライブラリです。を使用するには NumPy、次のコマンドを実行します。

import numpy
pandas

pandas は、 上に構築された Python ライブラリです NumPy。pandas ライブラリは、データサイエンティストにDataFrameデータ構造とデータ分析ツールを提供します。panda を使用するには、次のコマンドを実行します。

import pandas
PyArrow

PyArrow は、ジョブのパフォーマンスを向上させるためにインメモリの列データを管理する Python ライブラリです。 PyArrow は、列形式でデータを表現および交換するための標準的な方法である Apache Arrow クロス言語開発仕様に基づいています。を使用するには PyArrow、次のコマンドを実行します。

import pyarrow