Come posso configurare Amazon EMR per eseguire un lavoro PySpark utilizzando Python 3.4 o 3.6?

3 minuti di lettura
0

Python 3.4 o 3.6 è installato sulle mie istanze del cluster Amazon EMR, ma Spark esegue Python 2.7. Voglio aggiornare Spark a Python 3.4 o 3.6.

Breve descrizione

Nella maggior parte delle versioni di rilascio di Amazon EMR, le istanze del cluster e le applicazioni di sistema utilizzano diverse versioni di Python per impostazione predefinita:

  • Versioni di rilascio 4.6.0-5.19.0 di Amazon EMR: Python 3.4 è installato sulle istanze del cluster. Python 2.7 è l'impostazione predefinita del sistema.
  • Versioni di rilascio 5.20.0 e successive di Amazon EMR: Python 3.6 è installato sulle istanze del cluster. Per 5.20.0-5.29.0, Python 2.7 è l'impostazione predefinita del sistema. Per la versione 5.30.0 e successive di Amazon EMR, Python 3 è l'impostazione predefinita di sistema.

Per aggiornare la versione di Python utilizzata da PySpark, punta la variabile di ambiente PYSPARK_PYTHON per la classificazione spark-env alla directory in cui è installato Python 3.4 o 3.6.

Risoluzione

Su un cluster in esecuzione

Versione di rilascio 5.21.0 e successive di Amazon EMR

Invia una richiesta di riconfigurazione con un oggetto di configurazione simile al seguente:

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

Versione di rilascio 4.6.0-5.20.x di Amazon EMR

  1. Connettiti al nodo principale tramite SSH.

  2. Esegui il seguente comando per modificare l'ambiente Python predefinito:

sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
  1. Esegui il comando pyspark per confermare che PySpark stia utilizzando la versione di Python corretta:
[hadoop@ip-X-X-X-X conf]$ pyspark

L'output mostra che PySpark ora utilizza la stessa versione di Python installata sulle istanze del cluster. Esempio:

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 utilizza la nuova configurazione per il prossimo lavoro di PySpark.

Su un nuovo cluster

Aggiungi un oggetto di configurazione simile al seguente quando avvii un cluster utilizzando la versione di rilascio 4.6.0 o successiva di Amazon EMR:

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

Informazioni correlate

Configura Spark

Apache Spark

Documentazione PySpark

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa