1
resposta

AULA ANTIGA, CONFIGURAÇÃO DE AMBIENTE DESATUALIZADA

Seguindo os passos do instrutor não consegui fazer o comando df.show() rodar no windows.

Py4JJavaError                             Traceback (most recent call last)
Cell In[31], line 1
----> 1 df.show()

File g:\My Drive\sync\menu\courses\alura\formacao-apache-spark-python\.venv\Lib\site-packages\pyspark\sql\classic\dataframe.py:285, in DataFrame.show(self, n, truncate, vertical)
    284 def show(self, n: int = 20, truncate: Union[bool, int] = True, vertical: bool = False) -> None:
--> 285     print(self._show_string(n, truncate, vertical))

File g:\My Drive\sync\menu\courses\alura\formacao-apache-spark-python\.venv\Lib\site-packages\pyspark\sql\classic\dataframe.py:303, in DataFrame._show_string(self, n, truncate, vertical)
    297     raise PySparkTypeError(
    298         errorClass="NOT_BOOL",
    299         messageParameters={"arg_name": "vertical", "arg_type": type(vertical).__name__},
    300     )
    302 if isinstance(truncate, bool) and truncate:
--> 303     return self._jdf.showString(n, 20, vertical)
    304 else:
    305     try:

File g:\My Drive\sync\menu\courses\alura\formacao-apache-spark-python\.venv\Lib\site-packages\py4j\java_gateway.py:1362, in JavaMember.__call__(self, *args)
   1356 command = proto.CALL_COMMAND_NAME +\
   1357     self.command_header +\
   1358     args_command +\
   1359     proto.END_COMMAND_PART
   1361 answer = self.gateway_client.send_command(command)
...
    at java.base/java.io.DataInputStream.readFully(DataInputStream.java:210)
    at java.base/java.io.DataInputStream.readInt(DataInputStream.java:385)
    at org.apache.spark.api.python.PythonRunner$$anon$3.read(PythonRunner.scala:933)
    ... 26 more

Deve ser alguma configuração de ambiente, mas ainda não consegui resolver. Estou a dias tentando corrigir e não consigo. Vou acabr desistindo e ir para outro curso.

Precisam atualizar esse tutorial urgente com configurações mais recentes.

1 resposta

Oi Gabriel! Tudo bem?

Pelo traceback apresentado, o problema não está no comando df.show(), mas sim na configuração do ambiente local no Windows. Esse tipo de Py4JJavaError é comum quando há incompatibilidade entre as versões do Java, do Spark e do PySpark, mesmo quando o código está correto.

Compatibilidade versão Java

O material do curso foi construído utilizando uma versão Java compatível com o Spark 3.x, que é o Java 8 (OpenJDK 8) ou 11. Verifique se você não possui uma versão muito recente (como o Java 21) instalada, o que pode causar conflitos com o Spark.

Nas versões mais recentes, segundo a documentação do Spark, o PySpark passa a exigir Java 17 ou superior. Por isso, é importante verificar se as versões de Java, Spark, PySpark e Python estão alinhadas entre si.

Você pode consultar as versões compatíveis diretamente na documentação oficial:

Ela está em inglês, mas você pode usar o recurso de tradução automática do navegador

Além disso, certifique-se de que as variáveis de ambiente JAVA_HOME e SPARK_HOME estão corretamente configuradas e apontando para os diretórios corretos.

Para validação inicial, você pode:

  • Verificar a versão do Java com java -version
  • Conferir se o JAVA_HOME aponta para um JDK compatível com a versão do Spark em uso.

Configuração do Winutils

No Windows, também vale conferir se o winutils.exe está configurado corretamente, conforme explicado na aula
Utilizando Spark no Windows.

💡 Dica: Se a configuração local continuar apresentando erros, uma alternativa rápida para não perder o ritmo do curso é utilizar o Google Colab.

Abaixo deixo outros tópicos que podem te ajudar:

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!