Como instalar o Spark (PySpark) no Windows
Passo a passo de como fazer a instalação do Apache Spark em uma máquina Windows, para desenvolvimento local. Lembrando que a performance não é lá essas coisas, pois estaremos trabalhando com um singlenode, mas serve para o propósito de testes, e pequenos desenvolvimentos.
Pré Requisitos
-
7zip ou outro descompactador de arquivos
-
OpenJDK 8 do Java: Amazon Corretto
-
Interpretador Python configurado e funcional, com as bibliotecas do Jupyter Notebook instaladas.
3.1 OBS: Certifique-se de que o seu ambiente python esteja funcionando corretamente. É possível que havendo mais de uma versão de python instalada, o comando
jupyter notebook
não seja reconhecido e não funcione corretamente. Você pode tentar executar o Jupyter Notebook com o comandopython -m notebook
, nesse caso.
Passo a passo:
-
Crie uma pasta no
C:\spark
-
Baixe o arquivo compactado com a última versão do Apache Spark em spark.apache.org. Exemplo:
spark-3.5.1-bin-hadoop3.tgz
.2.1 Descompacte o arquivo em uma pasta, e descompacte o novo arquivo que foi criado.
2.2 Renomeie a pasta descompactada para
spark-3.5.1
e mova para que fique na estruturac:\spark\spark-3.5.1
. - Baixar Winutils
-
Colocar os arquivos baixados na etapa 3 na pasta
c:\spark\hadoop\bin
. -
Configuração das Variáveis de Ambiente
5.1
SPARK_HOME
:C:\spark\spark-3.5.1
5.2
HADOOP_HOME
:C:\spark\hadoop
5.3
JAVA_HOME
:C:\Program Files\Amazon Corretto\jdk1.8.0_412
5.4 Editar a variável
Path
e adicionar as seguintes linhas:%SPARK_HOME%\bin
%HADOOP_HOME%\bin
%JAVA_HOME%\bin
-
Instalar libs python para delta e spark
pip install delta-spark
pip install findspark
Com isso, já temos um ambiente spark pronto para ser utilizado. Pode ser testado abrindo um novo notebook, e rodando o código abaixo:
from delta import configure_spark_with_delta_pip
import findspark
findspark.init()
import pyspark
spark = configure_spark_with_delta_pip(pyspark.sql.SparkSession.builder.appName("APP_NAME")).getOrCreate()
dept = [("Finance",10),("Marketing",20),("Sales",30),("IT",40)]
deptColumns = ["dept_name","dept_id"]
deptDF = spark.createDataFrame(data=dept, schema = deptColumns)
deptDF.printSchema()
deptDF.show(truncate=False)
Configuração para acesso aos arquivos no OBS Huwaei
Para configurar o acesso ao OBS no spark, devemos baixar esses dois arquivos JAR, que devem ser adicionados na pasta C:\spark\spark-3.5.1\jars
.
Após esse download, devemos ajustar o arquivo de configuração, na pasta C:\spark\spark-3.5.1\conf
:
-
Copie o arquivo
spark-defaults.conf.template
para manter um backup, e renomeie paraspark-defaults.conf
. -
Adicione as configurações do acesso ao object storage no arquivo recém criado:
spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog
spark.hadoop.fs.obs.access.key XXXXXXXXXXXXXXXXXXX
spark.hadoop.fs.obs.secret.key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
spark.hadoop.fs.obs.endpoint obs.la-south-2.myhuaweicloud.com
Com essas configurações, feche qualquer prompt de comando, e qualquer notebook que possa estar aberto, e abra uma instância nova, para recarregar essas configurações. E podemos testar o acesso com o seguinte código:
from delta import configure_spark_with_delta_pip
import findspark
findspark.init()
import pyspark
spark = configure_spark_with_delta_pip(pyspark.sql.SparkSession.builder.appName("APP_NAME")).getOrCreate()
endpoint = "obs://nome-do-meu-bucket-trusted/"
tabela = spark.read.format('parquet').load(f'{endpoint}pasta/subpasta/tabela')
tabela.printSchema()
tabela.show()
# Exemplos de criação de temp view, com spark.sql
tabela.createOrReplaceTempView('tabela')
df = spark.sql('select * from tabela')
# Exemplo de escrita e carregamento dos dados em disco
df.write.mode('overwrite').format('delta').save('file:///C:/spark/tabela')
tabela = spark.read.format('delta').load('file:///C:/spark/tabela')