1
resposta

[Dúvida] Erro na criação do DataFrame: Py4JJavaError: An error occurred while calling o92.showString

quando executo o código a seguir:

data = [('Zeca', '35'), ('Eva', '29')]
colNames = ['Nome', 'Idade']
df = spark.createDataFrame(data, colNames)
df.show()

recebo o seguinte erro:

Py4JJavaError: An error occurred while calling o92.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 2.0 failed 1 times, most recent failure: Lost task 0.0 in stage 2.0 (TID 2) (DESKTOP-R519QKC executor driver): org.apache.spark.SparkException: Python worker failed to connect back.
    at org.apache.spark.api.python.PythonWorkerFactory.createSimpleWorker(PythonWorkerFactory.scala:203)
    at org.apache.spark.api.python.PythonWorkerFactory.create(PythonWorkerFactory.scala:109)
    at org.apache.spark.SparkEnv.createPythonWorker(SparkEnv.scala:124)
    at org.apache.spark.api.python.BasePythonRunner.compute(PythonRunner.scala:174)
    at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:67)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:364)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:328)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:364)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:328)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:364)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:328)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:364)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:328)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:364)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:328)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:364)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:328)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:93)
    at org.apache.spark.TaskContext.runTaskWithListeners(TaskContext.scala:161)
    at org.apache.spark.scheduler.Task.run(Task.scala:141)
    at org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$4(Executor.scala:620)
    at org.apache.spark.util.SparkErrorUtils.tryWithSafeFinally(SparkErrorUtils.scala:64)
    at org.apache.spark.util.SparkErrorUtils.tryWithSafeFinally$(SparkErrorUtils.scala:61)
    at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:94)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:623)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.net.SocketTimeoutException: Accept timed out
    at java.base/sun.nio.ch.NioSocketImpl.timedAccept(NioSocketImpl.java:701)
    at java.base/sun.nio.ch.NioSocketImpl.accept(NioSocketImpl.java:745)
    at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:698)
    at java.base/java.net.ServerSocket.platformImplAccept(ServerSocket.java:663)
    at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:639)
    at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:585)
    at java.base/java.net.ServerSocket.accept(ServerSocket.java:543)
    at org.apache.spark.api.python.PythonWorkerFactory.createSimpleWorker(PythonWorkerFactory.scala:190)
    ... 32 more
    Driver stacktrace:
    at org.apache.spark.scheduler.DAGScheduler.failJobAndIndependentStages(DAGScheduler.scala:2844)
    at org.apache.spark.scheduler.DAGScheduler.$anonfun$abortStage$2(DAGScheduler.scala:2780)
    at org.apache.spark.scheduler.DAGScheduler.$anonfun$abortStage$2$adapted(DAGScheduler.scala:2779)
    at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
    at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
    at org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:2779)
    at org.apache.spark.scheduler.DAGScheduler.$anonfun$handleTaskSetFailed$1(DAGScheduler.scala:1242)
    at org.apache.spark.scheduler.DAGScheduler.$anonfun$handleTaskSetFailed$1$adapted(DAGScheduler.scala:1242)
    at scala.Option.foreach(Option.scala:407)
1 resposta

Olá!

Pelo que vejo, você está tentando criar um DataFrame no Spark e está recebendo um erro Py4JJavaError. Este erro geralmente ocorre quando há um problema de comunicação entre o Python e o Java, que é o que o Py4J facilita.

O erro específico que você está vendo parece ser um problema de conexão entre o Python e o Java, como indicado pela linha "Python worker failed to connect back". Isso pode ser causado por várias razões, como problemas de rede ou configurações incorretas.

Aqui estão algumas coisas que você pode tentar:

  1. Verifique se você tem a versão correta do Java instalada. O Spark é construído em cima do Java e requer uma versão específica para funcionar corretamente.

  2. Certifique-se de que você tem a versão correta do PySpark para a versão do Spark que você está usando. Versões incompatíveis podem causar esse tipo de erro.

  3. Verifique se o seu firewall ou software de segurança não está bloqueando a conexão entre o Python e o Java. Você pode precisar adicionar uma exceção para o PySpark em suas configurações de firewall.

  4. Tente reiniciar o Spark e veja se isso resolve o problema. Às vezes, um simples reinício pode corrigir problemas de conexão.

  5. Se você estiver executando isso em um ambiente distribuído, verifique se todas as suas máquinas estão configuradas corretamente e podem se comunicar entre si.

Lembre-se que essas são apenas sugestões e podem não resolver o seu problema específico. Infelizmente, sem mais informações, é difícil dizer exatamente o que está causando esse erro. Qualquer coisa manda aqui de novo.

Espero ter ajudado e bons estudos!