

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# EMR Serverless에서 Python 라이브러리 사용
<a name="using-python-libraries"></a>

Amazon EMR Serverless 애플리케이션에서 PySpark 작업을 실행하는 경우 다양한 Python 라이브러리를 종속 항목으로 패키징할 수 있습니다. 이를 수행하려면 기본 Python 기능을 사용하거나, 가상 환경을 빌드하거나, Python 라이브러리를 사용하도록 PySpark 작업을 직접 구성할 수 있습니다. 이 페이지에서는 각 접근 방식을 다룹니다.

## 기본 Python 기능 사용
<a name="using-native-python-features"></a>

다음 구성을 설정하는 경우 PySpark를 사용하여 Python 파일(`.py`), 압축된 Python 패키지(`.zip`) 및 Egg 파일(`.egg`)을 Spark 실행기에 업로드할 수 있습니다.

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

PySpark 작업에 대해 Python 가상 환경을 사용하는 방법에 대한 자세한 내용은 [Using PySpark Native Features](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-pyspark-native-features)를 참조하세요.

EMR Notebook을 사용하는 경우 다음 코드를 실행하여 노트북에서 Python 종속성을 사용할 수 있도록 설정할 수 있습니다.

```
    %%configure -f
 {
    "conf": {
    "spark.submit.pyFiles":"s3:///amzn-s3-demo-bucket/EXAMPLE-PREFIX/<.py|.egg|.zip file>
                   }
 }
```

## Python 가상 환경 빌드
<a name="building-python-virtual-env"></a>

PySpark 커널 내에 여러 Python 라이브러리를 패키징하려는 경우 격리된 Python 가상 환경을 생성할 수도 있습니다.

1. Python 가상 환경을 빌드하려면 다음 명령을 사용합니다. 표시된 예제에서는 `scipy` 및 `matplotlib` 패키지를 가상 환경 패키지에 설치하고 아카이브를 Amazon S3 위치에 복사합니다.
**중요**  
EMR Serverless에서 사용하는 것과 동일한 버전의 Python(즉, Amazon EMR 릴리스 6.6.0의 경우 Python 3.7.10)을 사용하여 유사한 Amazon Linux 2 환경에서 다음 명령을 실행해야 합니다. [EMR Serverless Samples](https://github.com/aws-samples/emr-serverless-samples/tree/main/examples/pyspark/dependencies) GitHub 리포지토리에서 예제 Dockerfile을 찾을 수 있습니다.

   ```
   # 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
   ```

1. 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 바이너리를 재정의하지 않으면 이전 설정 시퀀스의 두 번째 구성은 `--conf spark.executorEnv.PYSPARK_PYTHON=python`입니다.

   PySpark 작업에 대해 Python 가상 환경을 사용하는 방법에 대한 자세한 내용은 [Using Virtualenv](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-virtualenv)를 참조하세요. Spark 작업을 제출하는 방법에 대한 자세한 예제는 [EMR Serverless 작업을 실행하는 경우 Spark 구성 사용](jobs-spark.md) 섹션을 참조하세요.

## Python 라이브러리를 사용하도록 PySpark 작업 구성
<a name="configuring-pyspark-jobs"></a>

Amazon EMR 릴리스 6.12.0 이상을 사용하면 추가 설정 없이 [pandas](https://pandas.pydata.org/docs/user_guide/index.html), [NumPy](https://numpy.org/doc/stable/user/index.html) 및 [PyArrow](https://arrow.apache.org/docs/python/index.html)와 같은 널리 사용되는 데이터 과학 Python 라이브러리를 사용하도록 EMR Serverless PySpark 작업을 직접 구성할 수 있습니다.

다음 예제에서는 PySpark 작업에 대해 각 Python 라이브러리를 패키징하는 방법을 보여줍니다.

------
#### [ NumPy ]

NumPy는 수학, 정렬, 무작위 시뮬레이션 및 기본 통계를 위한 다차원 배열 및 작업을 제공하는 과학 컴퓨팅용 Python 라이브러리입니다. NumPy를 사용하려면 다음 명령을 실행합니다.

```
import numpy
```

------
#### [ pandas ]

pandas는 NumPy에 빌드된 Python 라이브러리입니다. pandas 라이브러리는 데이터 과학자에게 [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) 데이터 구조 및 데이터 분석 도구를 제공합니다. pandas를 사용하려면 다음 명령을 실행합니다.

```
import pandas
```

------
#### [ PyArrow ]

PyArrow는 작업 성능 개선을 위해 메모리 내 열 데이터를 관리하는 Python 라이브러리입니다. PyArrow는 Apache Arrow 다국어 개발 사양을 기반으로 하며, 이는 열 형식으로 데이터를 표현하고 교환하는 표준 방법입니다. PyArrow를 사용하려면 다음 명령을 실행합니다.

```
import pyarrow
```

------