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