1
resposta

[Bug] Erro na criação do Spark DataFrame

Olá, prezados.

Assim como outras pessoas relataram aqui, aparece um erro de IndexError: tuple index out of range quando tentamos criar o DataFrame Spark.

Já tentei utilizar a solução abaixo, mas não deu certo também:

from pyspark.sql.types import StructType, StructField, StringType

from pyspark.sql.types import StructType, StructField, StringType

data = [('Zeca','35'), ('Eva', '29')]
colNames = ['Nome', 'Idade']

# Define the schema explicitly
schema = StructType([
    StructField("Nome", StringType(), True),
    StructField("Idade", StringType(), True)
])

df = spark.createDataFrame(data, schema)
df

Peço a vossa ajuda, pois desta forma não é possível continuar a acompanhar o curso junto com o instrutor.

Muito obrigado desde já.

1 resposta

Oi Vitor, tudo bem?

Esse erro IndexError: tuple index out of range geralmente acontece quando o número de elementos em cada tupla do data não bate com o número de campos definidos no schema.

No seu caso, o código está correto e deveria funcionar. Mas um detalhe que pode causar problema é se você estiver tentando criar o DataFrame sem ter uma sessão Spark ativa ou se houver alguma inconsistência na versão do PySpark.

Aqui vão algumas sugestões para resolver: 1. Garanta que a sessão Spark está ativa: from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

  1. Evite duplicar os imports (você importou StructType, StructField, StringType duas vezes seguidas).
    1. Tente uma versão mínima e funcional assim: from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType

spark = SparkSession.builder.getOrCreate()

data = [('Zeca','35'), ('Eva', '29')]

schema = StructType([ StructField("Nome", StringType(), True), StructField("Idade", StringType(), True) ])

df = spark.createDataFrame(data, schema) df.show()

Se ainda assim não funcionar, pode ser algo relacionado ao ambiente em que o código está sendo executado (como notebooks online ou restrições locais). Nesse caso, vale compartilhar qual ambiente está usando (Jupyter, Colab, Databricks, etc.) pra que a gente possa ajudar melhor.