Como usar bibliotecas Python externas no meu trabalho de ETL do AWS Glue 1.0 ou 0.9?

3 minuto de leitura
0

Quero usar uma biblioteca externa Python em meu trabalho de extração, transformação e carregamento (ETL) do AWS Glue 1.0 ou 0.9.

Descrição breve

Para usar uma biblioteca externa em uma tarefa de ETL Apache Spark, faça o seguinte:

1.    Compacte os arquivos de biblioteca em um arquivo .zip (a menos que a biblioteca esteja contida em um único arquivo .py).

2.    Carregue o pacote no Amazon Simple Storage Service (Amazon S3).

3.    Use a biblioteca em um trabalho ou em uma JobRun.

Resolução

Veja a seguir um exemplo de como usar uma biblioteca externa em uma tarefa de ETL Spark do AWS Glue 1.0 ou 0.9.

Importante: se quiser usar uma biblioteca externa no seu trabalho do AWS Glue 2.0, consulte Como usar bibliotecas externas do Python na minha tarefa de ETL do AWS Glue 2.0? Se quiser usar uma biblioteca externa em um trabalho de shell do Python, siga as etapas em Fornecer sua própria biblioteca Python.

1.    Crie uma biblioteca Python 2 ou Python 3 para boto3. Certifique-se de que a versão do AWS Glue que você está usando seja compatível com a versão do Python escolhida para a biblioteca. O AWS Glue versão 1.0 oferece suporte para Python 2 e Python 3, e o AWS Glue versão 0.9 somente oferece suporte para Python 2.

Observação: bibliotecas e módulos de extensão para trabalhos do Spark devem ser escritos em Python. Bibliotecas, como pandas, que são escritas em C não têm suporte no Glue 0.9 ou 1.0. Se você precisar usar uma biblioteca escrita em C, atualize o AWS Glue para pelo menos a versão 2.0 e use a opção --additional-python-modules. Para mais informações, consulte Como usar bibliotecas externas do Python no meu trabalho de ETL do AWS Glue 2.0?

2.    Inicie uma instância Linux do Amazon Elastic Compute Cloud (Amazon EC2).

3.    Conecte-se à instância Linux usando SSH.

4.    Execute os comandos a seguir para instalar o Python e o Boto3. Para mais informações, consulte a documentação do Boto3 para o Quickstart.

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.    Confirme a localização do diretório site-packages do Python:

python -m site

Você recebe uma saída semelhante à seguinte:

/usr/lib/python3.6/site-packages

6.    Compacte os arquivos externos de biblioteca em um arquivo .zip, a menos que a biblioteca esteja contida em um único arquivo .py. O arquivo .zip deve incluir um arquivo __init__.py, e o diretório do pacote deve estar na raiz do arquivamento. O arquivo __init__.py pode estar vazio. Para mais informações, consulte a documentação do Python para Pacotes.

Exemplo:

cd /usr/lib/python3.6/site-packages
sudo zip -r -X "/home/ec2-user/site-packages.zip" *

7.    Carregue o pacote no Amazon S3:

aws s3 cp /home/ec2-user/site-packages.zip s3://awsexamplebucket/

8.    Use a biblioteca em um trabalho ou em uma JobRun.

Para usar uma biblioteca externa em um endpoint de desenvolvimento, faça o seguinte:

1.    Compacte a biblioteca e carregue o arquivo no Amazon S3, conforme explicado anteriormente.

2.    Crie o endpoint de desenvolvimento. Em Caminho da biblioteca Python, insira o caminho do Amazon S3 para o pacote. Para mais informações, consulte Carregar bibliotecas Python em um endpoint de desenvolvimento.


Informações relacionadas

Usar bibliotecas Python com o AWS Glue

AWS OFICIAL
AWS OFICIALAtualizada há um ano