Olá pessoal!
Vi que várias pessoas tiveram o seguinte erro na hora de ler os CSVs:
---------------------------------------------------------------------------
Py4JJavaError Traceback (most recent call last)
Cell In[5], line 3
1 path = 'C:/Users/andre/projetos/Estudos/spark-python/dados/empresas/'
2 path = 'dados/empresas'
----> 3 empresas = spark.read.csv(path, sep=';', inferSchema=True)
File C:\Program Files\Spark\spark-3.5.1-bin-hadoop3\python\pyspark\sql\readwriter.py:740, in DataFrameReader.csv(self, path, schema, sep, encoding,
[ ... ]
Py4JJavaError: An error occurred while calling o37.csv.
: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
[ ... ]
Após ler a solução que os instrutores deram e nenhuma funcionar, após ter feito algumas pesquisas encontrei enfim o erro: No vídeo o instrutor coloca o link para o JRE (Java Runtime Environment) da versão 8 do Java, mas o que é necessário é o JDK (Java Development Kit).
Como resolver:
Baixar o JDK:
Acesse o site oficial da Oracle: https://www.oracle.com/java/technologies/javase-downloads.html. Baixe a versão apropriada do JDK (Java SE 8 ou 11).
Instalar o JDK e configurar Variável de Ambiente:
Execute o instalador do JDK que você baixou e siga as instruções para instalar o JDK no seu sistema.
Configurar a Variável de Ambiente JAVA_HOME:
Após a instalação, o caminho padrão de instalação do JDK no Windows geralmente é algo como C:\Program Files\Java\jdk1.8.0_281 para o Java 8.
- Clique com o botão direito em "Este PC" ou "Meu Computador" e selecione "Propriedades".
- Clique em "Configurações avançadas do sistema".
- Na aba "Avançado", clique no botão "Variáveis de ambiente".
- Na seção "Variáveis de sistema", clique em "Novo" para adicionar uma nova variável.
- Nome da variável: JAVA_HOME
- Valor da variável: C:\Program Files\Java\jdk1.8.0_281 (substitua pelo caminho do seu JDK).
Adicionar JAVA_HOME ao Path:
- Na lista de "Variáveis de sistema", encontre a variável Path, selecione-a e clique em "Editar".
- Adicione %JAVA_HOME%\bin ao final da lista de caminhos.
Verificar a Instalação do JDK
Após configurar o JAVA_HOME e atualizar o Path, abra um novo prompt de comando. No prompt de comando, digite:
java -version
A saída deve mostrar a versão do JDK instalada. Para o Java 8, a saída será semelhante a:
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
Para o Java 11, a saída será semelhante a:
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9)
OpenJDK 64-Bit Server VM (build 11.0.11+9, mixed mode)
Agora reinicie seu Jupyter e tente executar novamente, lembrando de iniciar a sessão do spark novamente, com:
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master('local[*]') \
.appName("Iniciando com Spark") \
.getOrCreate()
Outras possíveis soluções
Após algumas tentativas, além da solução acima, vi outras adicionando a dll do hadoop na pasta bin. Para mim apenas o passo a passo acima funcionou, mas vocês podem tentar também. Então, da mesma pasta que você baixou o wintools copie o hadoop.dll e cole na pasta hadoop/bin. Veja se o problema é resolvido.
É isso pessoal, espero ter ajudado.