Ir para conteúdo
  • 0

Duvida: Carregar arquivo Json com sub-nível


Pergunta

  • Alunos

Pessoal, boa tarde!

Estou realizando o curso de databricks com python e tem uma atividade que devemos carregar o arquivo  jogadores.json. (Anexo)
Mas não estou conseguindo devido a estrutura do nó birth.

 

{
    "id": 405341,
    "name": "Vinicius",
    "firstname": "Vinicius",
    "lastname": "Negro Di Stefano",
    "age": 21,
    "birth": {
      "date": "2002-09-23",
      "place": null,
      "country": "Brazil"
    }

Fiz uma tentativa de montar dois schemas e levar o segundo para dentro do schema principal, que seria o de jogares, mas ao tentar carregar os dados carrega em branco e sem erro.

birth_schema = StructType(
    fields=[
        StructField("date", TimestampType(), False),
        StructField("place", StringType(), False),
        StructField("country", StructType(), False),
    ]
)

players_schema = StructType([
        StructField("id", StringType(), False),
        StructField("name", StringType(), False),
        StructField("firstname", StringType(), False),
        StructField("lastname", StringType(), False),
        StructField("age", IntegerType(), False),
        StructField("birth", birth_schema, False),
        StructField("nationality", StringType(), False),
        StructField("height", StringType(), False),
        StructField("weight", StringType(), False),
        StructField("injured", BooleanType(), False),
        StructField("photo", StringType(), False),
    ]
)

e quando eu removo o field birth, os dados são apresentados.

Alguém teria alguma dica de como posso contornar essa situação?

 

Obrigado, 
Cleberson

jogadores.json

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 1
  • Alunos

Pessoal, boa noite!

Consegui resolver o problema, segue exemplo de código, caso alguém venha passar pelo mesmo problema.

 

jogadores_df = spark.read.option("multiLine", True) \
    .option("columnNameOfCorruptRecord", "_corrupt_record") \
    .json(caminho_jogadores)

jogadores_df2 = jogadores_df.select(
    "id",
    "name",
    "firstname",
    "lastname",
    "age",
    "birth.country",
    "birth.date",
    "birth.place",
    "nationality",
    "height",
    "weight",
    "injured",
    "photo",
)

 

  • Like 1
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...