Como configuro o Amazon EMR para executar um trabalho do PySpark usando Python 3.4 ou 3.6?

3 minuto de leitura
0

O Python 3.4 ou 3.6 está instalado nas minhas instâncias de cluster do Amazon EMR, mas o Spark está executando o Python 2.7. Quero atualizar o Spark para o Python 3.4 ou 3.6.

Descrição breve

Na maioria das versões de lançamento do Amazon EMR, as instâncias de cluster e as aplicações do sistema usam diferentes versões Python por padrão:

  • Versões de lançamento do Amazon EMR 4.6.0-5.19.0: O Python 3.4 está instalado nas instâncias do cluster. O Python 2.7 é o padrão do sistema.
  • Versões de lançamento do Amazon EMR 5.20.0 e posteriores: O Python 3.6 está instalado nas instâncias do cluster. Para 5.20.0-5.29.0, o Python 2.7 é o padrão do sistema. Para o Amazon EMR versão 5.30.0 e posterior, o Python 3 é o padrão do sistema.

Para atualizar a versão Python usada pelo PySpark, aponte a variável de ambiente PYSPARK_PYTHON da classificação spark-env para o diretório em que o Python 3.4 ou 3.6 está instalado.

Resolução

Em um cluster em execução

Versão de lançamento do Amazon EMR 5.21.0 e posterior

Envie uma solicitação de reconfiguração com um objeto de configuração semelhante ao seguinte:

[
  {
     "Classification": "spark-env",
     "Configurations": [
       {
         "Classification": "export",
         "Properties": {
            "PYSPARK_PYTHON": "/usr/bin/python3"
          }
       }
    ]
  }
]

Versão de lançamento do Amazon EMR 4.6.0-5.20.x

1.    Conecte-se ao nó principal usando SSH.

2.    Execute o comando a seguir para alterar o ambiente padrão do Python:

sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh

3.    Execute o comando pyspark para confirmar que o PySpark está usando a versão correta do Python:

[hadoop@ip-X-X-X-X conf]$ pyspark

A saída mostra que o PySpark agora está usando a mesma versão do Python instalada nas instâncias do cluster. Exemplo:

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'.

O Spark usa a nova configuração para a próxima tarefa do PySpark.

Em um novo cluster

Adicione um objeto de configuraçãosemelhante ao seguinte ao iniciar um cluster usando a versão 4.6.0 ou posterior do Amazon EMR:

[
  {
     "Classification": "spark-env",
     "Configurations": [
       {
         "Classification": "export",
         "Properties": {
            "PYSPARK_PYTHON": "/usr/bin/python3"
          }
       }
    ]
  }
]

Informações relacionadas

Configurar o Spark

Apache Spark

Documentação do PySpark

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos