New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Amazon EMR에서 Python 버전을 업그레이드하고 업그레이드된 Python 버전을 사용하도록 PySpark 작업을 구성하려면 어떻게 해야 합니까?
Amazon EMR에서 Python 버전을 업그레이드하고 업그레이드된 Python 버전을 사용하도록 PySpark 작업을 구성하고 싶습니다.
간략한 설명
클러스터 인스턴스와 시스템 애플리케이션은 다음 Amazon EMR 릴리스 버전에 따라 서로 다른 Python 버전을 사용합니다.
- Amazon EMR 릴리스 버전 4.6.0-5.19.0: Python 3.4가 클러스터 인스턴스에 설치됩니다. Python 2.7이 시스템 기본값입니다.
- Amazon EMR 릴리스 버전 5.20.0 이상: Python 3.6이 클러스터 인스턴스에 설치됩니다. Amazon EMR 버전 5.20.0~5.29.0의 경우, Python 2.7이 시스템 기본값입니다. 버전 5.30.0 이상에서는 Python 3이 시스템 기본값입니다.
- Amazon EMR 릴리스 버전 6.0.0 이상: Python 3.7이 클러스터 인스턴스에 설치됩니다. Python 3이 시스템 기본값입니다.
- Amazon EMR 릴리스 버전 7.0.0 이상: Python 3.9가 클러스터 인스턴스에 설치됩니다. Python 3이 시스템 기본값입니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
Python 버전을 업그레이드하려면 spark-env 분류에 대한 PYSPARK_PYTHON 환경 변수가 새 Python 버전이 설치된 디렉터리를 가리키도록 하십시오.
which example-python-version
참고: example-python-version을 새 Python 버전으로 바꾸십시오.
Amazon EC2에서 실행되는 Amazon EMR용 Python 버전 업그레이드
참고: Amazon EMR 클러스터 인스턴스에 새 Python 및 OpenSSL 버전을 설치하기 전에 다음 스크립트를 테스트하십시오.
Amazon Elastic Compute Cloud(Amazon EC2)에서 실행되는 Amazon EMR 버전 6.15용 Python 3.9로 업그레이드하려면 다음 스크립트를 사용하십시오. 스크립트를 사용하여 Amazon EMR 버전 7.0에서 Python 3.10 이상으로 업그레이드할 수도 있습니다.
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations sudo make altinstall
참고: example-python3-version을 Python 3 버전으로 바꾸십시오.
Amazon EMR 6.15 이전 버전에서 Python 3.10 이상으로 업그레이드하려면 OpenSSL이 필요합니다. 다음 스크립트를 사용하십시오.
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel cd /home/hadoop/ wget https://github.com/openssl/openssl/archive/refs/tags/example-openssl11-version.tar.gz tar -xzf example-openssl11-version.tar.gz cd example-openssl11-version/ ./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic make sudo make install cd /home/hadoop/ wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations --with-openssl=/usr sudo make altinstall
참고: example-python3-version을 Python 3 버전으로 바꾸고 example-openssl11-version을 OpenSSL 11 버전으로 바꾸십시오. 자세한 내용은 GitHub 웹사이트의 openssl을 참조하십시오.
업그레이드된 버전을 기본 Python 3 설치로 사용하려면 /usr/local/bin/python3.x를 새 Python 위치로 사용하십시오. 위의 Python 스크립트는 /usr/local/bin/python3.x에 설치되며 기본 Python 설치는 /usr/bin/python3입니다.
실행 중인 클러스터에서 Python 버전 업그레이드
참고: Amazon EMR 버전 5.36.0 및 이전 버전의 경우 Python 버전을 3.8로 업그레이드할 수 있습니다.
Amazon EMR 버전 5.21.0 이하
다음과 비슷한 구성 객체를 사용하여 재구성 요청을 제출합니다.
[ { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "PYSPARK_PYTHON": "/usr/bin/python3" } } ] } ]
Amazon EMR 버전 4.6.0~5.20.x
다음 단계를 완료하십시오.
- SSH를 사용하여 기본 노드에 연결합니다.
- 기본 Python 환경을 변경하려면 다음 명령을 실행합니다.
PySpark가 올바른 Python 버전을 사용하는지 확인하려면 다음 명령을 실행합니다.sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
참고: example-ip-address를 해당 IP 주소로 바꾸십시오.[hadoop@example-ip-address conf]$ pyspark
출력 예시:Python 3.4.8 (default, Apr 25 2018, 23:50:36) Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.3.1 /_/ Using Python version 3.4.8 (default, Apr 25 2018 23:50:36) SparkSession available as 'spark'.
참고: 새 구성은 다음 PySpark 작업에 적용됩니다.
새 클러스터에서 Python 버전 업그레이드
Amazon EMR에서 클러스터를 시작할 때 Python 버전을 업그레이드하려면 사용하는 스크립트에 부트스트랩 작업을 추가합니다.
Amazon EC2에서 실행되는 Amazon EMR 버전 6.15용 Python 3.9로 업그레이드하려면 다음 스크립트를 사용합니다. 스크립트를 사용하여 Amazon EMR 버전 7.0에서 Python 3.10 이상으로 업그레이드할 수도 있습니다.
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations sudo make altinstall
참고: example-python3-version을 Python 3 버전으로 바꾸십시오.
Amazon EMR 6.15 및 이전 버전에서 Python 3.10 이상으로 업그레이드하려면 OpenSSL이 필요합니다. 다음 스크립트를 사용하십시오.
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel cd /home/hadoop/ wget https://github.com/openssl/openssl/archive/refs/tags/example-openssl11-version.tar.gz tar -xzf example-openssl11-version.tar.gz cd example-openssl11-version/ ./config —prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic make sudo make install cd /home/hadoop/ wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations --with-openssl=/usr sudo make altinstall
참고: example-python3-version을 Python 3 버전으로 바꾸고 example-openssl11-version을 OpenSSL 11 버전으로 바꾸십시오. 자세한 내용은 GitHub 웹사이트의 openssl을 참조하십시오.
그런 다음 다음과 비슷한 구성 객체를 추가합니다.
[ { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "PYSPARK_PYTHON": "<example-python-version-path>" } } ] } ]
Amazon EKS의 Amazon EMR에서 Python 버전 업그레이드
참고: Amazon Linux 2023 기반 이미지는 이름에 al2023이 있습니다. 또한 Amazon EMR 6.13.0 이상에서는 Amazon Linux 2023을 기반으로 하는 이미지에서 기본적으로 Python 3.9.16을 사용합니다. Amazon Linux 2 기반 이미지의 경우 Python 3.7이 기본 버전입니다.
Amazon Elastic Kubernetes Service(Amazon EKS)의 Amazon EMR에서 Python 버전을 업그레이드하려면 도커 이미지가 필요합니다. AWS 리전의 기본 URI를 선택합니다.
FROM example-base-URI-account-id.dkr.ecr.example-region.amazonaws.com/spark/emr-6.15.0 USER root RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make RUN wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz && \ tar xzf example-python3-version.tgz && cd example-python3-version && \ ./configure --enable-optimizations && \ make altinstall USER hadoop:hadoop
참고: example-base-URI-account-id를 Apache Spark 이미지의 기본 계정 ID로, example-region을 리전으로, example-python3-version을 Python 버전으로 바꾸십시오.
Spark 워크로드를 제출할 때 이미지를 전달하려면 애플리케이션 구성 오버라이드, Spark 드라이버 및 기본 포드 이미지를 사용합니다.
{ "classification": "spark-defaults", "properties": { "spark.kubernetes.container.image": "example-account-id.dkr.ecr.example-region.amazonaws.com/example-repository" } }
참고: example-account-id를 생성된 이미지를 저장하는 계정 ID로, example-repository를 사용자 지정 이미지를 저장하는 저장소 이름으로, example-region을 리전으로 바꾸십시오.
Amazon EMR Serverless에서 Python 버전 업그레이드
Amazon EMR Serverless 애플리케이션에서 Python 버전을 업그레이드하려면 도커 이미지를 사용하여 새 Python 버전을 설치합니다.
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest USER root # install python 3 RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make RUN wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz && \ tar xzf example-python3-version.tgz && cd example-python3-version && \ ./configure --enable-optimizations && \ make altinstall # EMRS will run the image as hadoop USER hadoop:hadoop
참고: example-python-version을 Python 3 버전으로 바꾸십시오.
Amazon EMR Serverless 애플리케이션에 Spark 작업을 제출할 때 새 Python 버전을 사용하려면 다음 경로를 전달합니다.
--conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3.9 --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=/usr/local/bin/python3.9 --conf spark.executorEnv.PYSPARK_PYTHON=/usr/local/bin/python3.9
관련 정보

관련 콘텐츠
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 한 달 전