AWS Glue 1.0 또는 0.9 추출, 전환, 적재(ETL) 작업에서 외부 Python 라이브러리를 사용하고 싶습니다.
간략한 설명
Apache Spark ETL 작업에서 외부 라이브러리를 사용하려면 다음을 수행하세요.
1. 라이브러리 파일을 .zip 파일로 압축합니다(라이브러리에 하나의 .py 파일이 포함된 경우는 예외).
2. 패키지를 Amazon Simple Storage Service(Amazon S3)에 업로드합니다.
3. 작업 또는 JobRun에서 라이브러리를 사용합니다.
해결 방법
다음은 Spark ETL AWS Glue 1.0 또는 0.9 ETL 작업에서 외부 라이브러리를 사용하는 방법의 예입니다.
중요: AWS Glue 2.0 작업에서 외부 라이브러리를 사용하려면 AWS Glue 2.0 ETL 작업에서 외부 Python 라이브러리를 사용하려면 어떻게 해야 합니까?를 참조하세요. Python 셸 작업에서 외부 라이브러리를 사용하려면 자체 Python 라이브러리 제공의 단계를 따르세요.
1. boto3용 Python 2 또는 Python 3 라이브러리를 생성합니다. 사용 중인 AWS Glue 버전이 라이브러리용으로 선택한 Python 버전을 지원하는지 확인하세요. AWS Glue 버전 1.0은 Python 2와 Python 3을 지원하고, AWS Glue 버전 0.9는 Python 2만 지원합니다.
참고: Spark 작업을 위한 라이브러리 및 확장 모듈은 Python으로 작성해야 합니다. C로 작성된 pandas와 같은 라이브러리는 Glue 0.9 또는 1.0에서 지원되지 않습니다. C로 작성된 라이브러리를 사용해야 하는 경우 AWS Glue를 버전 2.0 이상으로 업그레이드하고 --additional-python-modules 옵션을 사용하세요. 자세한 내용은 AWS Glue 2.0 ETL 작업에서 외부 Python 라이브러리를 사용하려면 어떻게 해야 하나요?를 참조하세요.
2. Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 시작합니다.
3. SSH를 사용하여 Linux 인스턴스에 연결합니다.
4. 다음 명령을 실행하여 Python과 Boto3를 설치합니다. 자세한 내용은 Quickstart에 대한 Boto3 문서를 참조하세요.
sudo yum groupinstall "Development Tools"
sudo yum -y install openssl-devel
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9/
./configure --enable-optimizations
sudo make install
sudo pip install boto3
5. Python site-packages 디렉터리 위치를 확인합니다.
python -m site
그러면 다음과 유사한 출력이 나타납니다.
/usr/lib/python3.6/site-packages
6. 라이브러리가 단일.py 파일에 포함되어 있지 않은 경우 외부 라이브러리 파일을.zip 파일로 패키지합니다. .zip 파일에는 __init__.py 파일이 포함되어야 하며 패키지 디렉터리는 아카이브의 루트에 있어야 합니다. __init__.py 파일은 비어 있을 수 있습니다. 자세한 내용은 Packages에 대한 Python 문서를 참조하세요.
예:
cd /usr/lib/python3.6/site-packages
sudo zip -r -X "/home/ec2-user/site-packages.zip" *
7. Amazon S3에 패키지를 업로드합니다.
aws s3 cp /home/ec2-user/site-packages.zip s3://awsexamplebucket/
8. 작업 또는 JobRun에서 라이브러리를 사용합니다.
개발 엔드포인트에서 외부 라이브러리를 사용하려면 다음을 수행합니다.
1. 앞서 설명한 대로 라이브러리를 패키지로 만들고 해당 파일을 Amazon S3에 업로드합니다.
2. 개발 엔드포인트를 생성합니다. Python 라이브러리 경로에는 패키지의 Amazon S3 경로를 입력합니다. 자세한 내용은 개발 엔드포인트에서 Python 라이브러리 로드를 참조하세요.
관련 정보
AWS Glue에서 Python 라이브러리 사용