Come posso personalizzare la configurazione per un processo Apache Spark in un notebook Amazon EMR?
Breve descrizione
Un notebook Amazon EMR è un notebook Jupyter serverless. Un notebook Jupyter utilizza il kernel Sparkmagic come client per lavorare in modo interattivo con Spark in un cluster EMR remoto tramite un server Apache Livy. È possibile usare i comandi Sparkmagic per personalizzare la configurazione di Spark. Una configurazione personalizzata è utile quando si desidera effettuare le seguenti operazioni:
- Cambiare la memoria dell'esecutore e i core dell'esecutore per un processo Spark
- Modificare l'allocazione delle risorse per Spark
Soluzione
Modifica della sessione corrente
1. In una cella del notebook Jupyter, esegui il comando %%configure per modificare la configurazione del processo. Nell'esempio seguente, il comando modifica la memoria dell'esecutore per il processo Spark.
%%configure -f
{"executorMemory":"4G"}
2. Per le configurazioni aggiuntive che di solito passi con l'opzione --conf, utilizzare un oggetto JSON annidato, come mostrato nell'esempio seguente. Utilizza questo metodo invece di passare esplicitamente un oggetto conf a uno SparkContext o una SparkSession.
%%configure -f
{"conf":{"spark.dynamicAllocation.enabled":"false"}}
Verifica che la modifica della configurazione sia andata a buon fine
1. Sul lato client, esegui il comando %%info su Jupyter per verificare la configurazione della sessione corrente. Output di esempio:
Current session configs: {'executorMemory': '4G', 'conf': {'spark.dynamicAllocation.enabled': 'false'}, 'kind': 'pyspark'}
2. Sul lato server, controlla il log /var/log/livy/livy-livy-server.out sul cluster EMR. Se è stata avviata una SparkSession, dovresti vedere una voce di registro simile alla seguente:
20/06/24 10:11:22 INFO InteractiveSession$: Creating Interactive session 2: [owner: null, request: [kind: pyspark, proxyUser: None, executorMemory: 4G, conf: spark.dynamicAllocation.enabled -> false, heartbeatTimeoutInSecond: 0]]
Informazioni correlate
Apache Livy - REST API