¿Cómo puedo configurar Amazon EMR para ejecutar un trabajo de PySpark con Python 3.4 o 3.6?

3 minutos de lectura
0

En mis instancias de clúster de Amazon EMR se ha instalado Python 3.4 o 3.6, pero Spark ejecuta Python 2.7. Quiero actualizar Spark a Python 3.4 o 3.6.

Breve descripción

En la mayoría de las versiones de Amazon EMR, las instancias de clúster y las aplicaciones del sistema utilizan diferentes versiones de Python de forma predeterminada:

  • Versiones 4.6.0-5.19.0 de Amazon EMR: Python 3.4 está instalado en las instancias del clúster. Python 2.7 es el valor predeterminado del sistema.
  • Versiones 5.20.0 y posteriores de Amazon EMR: Python 3.6 está instalado en las instancias del clúster. Para 5.20.0-5.29.0, Python 2.7 es el valor predeterminado del sistema. Para la versión 5.30.0 de Amazon EMR y posteriores, Python 3 es el valor predeterminado del sistema.

Con el fin de actualizar la versión de Python que utiliza PySpark, utilice la variable de entorno PYSPARK_PYTHON de la clasificación spark-env para señalar al directorio donde se ha instalado Python 3.4 o 3.6.

Solución

En un clúster en ejecución

Versión 5.21.0 de Amazon EMR y posteriores

Envíe una solicitud de reconfiguración con un objeto de configuración similar al siguiente:

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

Versión 4.6.0-5.20.x de Amazon EMR

1.    Conéctese al nodo maestro mediante SSH.

2.    Ejecute el siguiente comando para cambiar el entorno predeterminado de Python:

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

3.    Ejecuta el comando pyspark para confirmar que PySpark utiliza la versión correcta de Python:

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

El resultado muestra que ahora PySpark utiliza la misma versión de Python que se ha instalado en las instancias del clúster. Ejemplo:

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

Spark usa la nueva configuración para el siguiente trabajo de PySpark.

En un clúster nuevo

Añada un objeto de configuración similar al siguiente cuando lance un clúster con la versión 4.6.0 o posterior de Amazon EMR:

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

Información relacionada

Configuración de Spark

Apache Spark

Documentación de PySpark

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años