1
resposta

[SOLUÇÃO] para erro Py4JJavaError em ambiente local

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.

1 resposta

Oi, Andressa! Tudo bem?

Muito obrigada por compartilhar sua experiência e solução com a comunidade, sua contribuição é muito valiosa e com certeza ajudará outros estudantes que possam estar enfrentando o mesmo problema! Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!