PySpark Ler JSON()

Pyspark Ler Json



Ao trabalhar com PySpark DataFrames, ele precisa ser armazenado no PySpark DataFrame se você quiser processar os dados JSON. Depois de armazenar no DataFrame, podemos aplicar as diferentes operações e métodos nos dados. Além disso, há muitas vantagens se convertermos JSON em PySpark DataFrame, pois é simples e podemos transformar/particionar os dados de maneira mais simples.

Tema do conteúdo:

Lendo JSON no PySpark DataFrame usando Pandas.read_json()







Lendo JSON para PySpark DataFrame usando Spark.read.json()



Lendo JSON para PySpark DataFrame usando o PySpark SQL



Neste tutorial, veremos como ler JSON no PySpark DataFrame usando pandas.read_json(), spark.read.json() e spark.sql. Em todos os cenários, veremos os diferentes exemplos considerando os diferentes formatos JSON.





Instale a biblioteca PySpark antes de implementar os exemplos a seguir.

pip instalar pyspark

Após a instalação bem-sucedida, você pode ver a saída da seguinte forma:



Lendo JSON no PySpark DataFrame usando Pandas.read_json()

No PySpark, o método createDataFrame() é usado para criar o DataFrame diretamente. Aqui, só precisamos passar o arquivo/caminho JSON para o arquivo JSON através do método pandas.read_json(). Este método read_json() pega o nome do arquivo/caminho que está disponível no módulo Pandas. É por isso que é necessário importar e utilizar o módulo Pandas.

Sintaxe:

spark_app.createDataFrame(pandas.read_json( 'file_name.json' ))

Exemplo:

Vamos criar um arquivo JSON chamado “student_skill.json” que contém 2 registros. Aqui, as teclas/colunas são “Aluno 1” e “Aluno 2”. As linhas são nome, idade, habilidade1 e habilidade2.

importar pyspark

importar pandas

de pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()

# Usando pandas.read_json()

candidate_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

candidate_skills.show()

Saída:

Podemos ver que os dados JSON são convertidos em PySpark DataFrame com colunas e linhas especificadas.

2. Lendo JSON para PySpark DataFrame usando Spark.read.json()

O read.json() é um método semelhante ao read_json() no Pandas. Aqui, read.json() pega um caminho para JSON ou diretamente para o arquivo JSON e o carrega diretamente no PySpark DataFrame. Não há necessidade de usar o método createDataFrame() neste cenário. Se você quiser ler vários arquivos JSON por vez, precisamos passar uma lista de nomes de arquivos JSON por meio de uma lista separada por vírgula. Todos os registros JSON são armazenados em um único DataFrame.

Sintaxe:

Arquivo Único - spark_app.read.json( 'file_name.json' )

Vários arquivos - spark_app.read.json([ 'arquivo1.json' , 'arquivo2.json' ,...])

Cenário 1: ler JSON com linha única

Se o seu arquivo JSON estiver nos formatos record1, record2, record3… (single line), podemos chamá-lo de JSON com linhas únicas. O Spark processa esses registros e os armazena no PySpark DataFrame como linhas. Cada registro é uma linha no PySpark DataFrame.

Vamos criar um arquivo JSON chamado “candidate_skills.json” que contém 3 registros. Leia este JSON no PySpark DataFrame.

importar pyspark

de pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()

# Leia candidate_skills.json no PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json( 'candidato_skills.json' )

candidate_skills.show()

Saída:

Podemos ver que os dados JSON são convertidos em PySpark DataFrame com registros e nomes de coluna especificados.

Cenário 2: ler JSON com várias linhas

Se o seu arquivo JSON tiver várias linhas, você precisará usar o método read.option().json() para passar o parâmetro multiline que deve ser definido como true. Isso nos permite carregar o JSON com várias linhas no PySpark DataFrame.

ler.opção( 'multilinha' , 'verdadeiro' ).json( 'file_name.json' )

Vamos criar um arquivo JSON chamado “multi.json” que contém 3 registros. Leia este JSON no PySpark DataFrame.

importar pyspark

de pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()

# Leia multi.json (com várias linhas) no PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.option( 'multilinha' , 'verdadeiro' ).json( 'multi.json' )

candidate_skills.show()

Saída:

Cenário 3: ler vários JSON

Já discutimos na fase inicial deste tutorial sobre vários arquivos JSON. Se você quiser ler vários arquivos JSON por vez e armazená-los em um único PySpark DataFrame, precisamos passar uma lista de nomes de arquivo para o método read.json().

Vamos criar dois arquivos JSON chamados “candidate_skills.json” e “candidate_skills2.json” e carregá-los no PySpark DataFrame.

O arquivo “candidate_skills.json” contém três registros.

O arquivo “candidate_skill2.json” contém apenas um único registro.

importar pyspark

de pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()

# Leia os arquivos candidate_skills e candidate_skills2 por vez no PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json([ 'candidato_skills.json' , 'candidato_skills2.json' ])

candidate_skills.show()

Saída:

Por fim, o DataFrame contém quatro registros. Os três primeiros registros pertencem ao primeiro JSON e os últimos registros pertencem ao segundo JSON.

Lendo JSON para PySpark DataFrame usando Spark.read.json()

O read.json() é um método semelhante ao read_json() no Pandas. Aqui, read.json() pega um caminho para JSON ou diretamente para o arquivo JSON e o carrega diretamente no PySpark DataFrame. Não há necessidade de usar o método createDataFrame() neste cenário. Se você quiser ler vários arquivos JSON por vez, precisamos passar uma lista de nomes de arquivos JSON por meio de uma lista separada por vírgula. Todos os registros JSON são armazenados em um único DataFrame.

Sintaxe:

Arquivo Único - spark_app.read.json( 'file_name.json' )

Vários arquivos - spark_app.read.json([ 'arquivo1.json' , 'arquivo2.json' ,...])

Cenário 1: ler JSON com linha única

Se o seu arquivo JSON estiver no formato record1, record2, record3… (single line), podemos chamá-lo de JSON com linhas únicas. O Spark processa esses registros e os armazena no PySpark DataFrame como linhas. Cada registro é uma linha no PySpark DataFrame.

Vamos criar um arquivo JSON chamado “candidate_skills.json” que contém 3 registros. Leia este JSON no PySpark DataFrame.

importar pyspark

de pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()

# Leia candidate_skills.json no PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json( 'candidato_skills.json' )

candidate_skills.show()

Saída:

Podemos ver que os dados JSON são convertidos em PySpark DataFrame com registros e nomes de coluna especificados.

Lendo JSON para PySpark DataFrame usando o PySpark SQL

Pode ser possível criar uma visualização temporária de nossos dados JSON usando o PySpark SQL. Diretamente, podemos fornecer o JSON no momento da criação da visualização temporária. Observe a seguinte sintaxe. Depois disso, podemos usar o comando SELECT para exibir o PySpark DataFrame.

Sintaxe:

spark_app.sql( 'CREATE TEMPORARY VIEW VIEW_NAME USING json OPTIONS (path 'file_name.json')' )

Aqui, o “VIEW_NAME” é a visualização dos dados JSON e o “file_name” é o nome do arquivo JSON.

Exemplo 1:

Considere o arquivo JSON usado nos exemplos anteriores – “candidate_skills.json”. Selecione todas as linhas do DataFrame usando SELECT com o operador “*”. Aqui, * seleciona todas as colunas do PySpark DataFrame.

importar pyspark

importar pandas

de pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Dica do Linux' ).getOrCreate()

# Usando spark.sql para criar VIEW a partir do JSON

candidato_skills = linuxhint_spark_app.sql( 'CREATE TEMPORARY VIEW Candidate_data USANDO OPÇÕES json (caminho 'candidate_skills.json')' )

# Use a consulta SELECT para selecionar todos os registros de Candidate_data.

linuxhint_spark_app.sql( 'SELECT * de Candidate_data' ).mostrar()

Saída:

O número total de registros no PySpark DataFrame (lido do JSON) é 3.

Exemplo 2:

Agora, filtre os registros no PySpark DataFrame com base na coluna de idade. Use o operador “maior que” na idade para obter as linhas com uma idade maior que 22.

# Use a consulta SELECT para selecionar registros com idade > 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data where age>22' ).mostrar()

Saída:

Há apenas um registro no PySpark DataFrame com idade superior a 22.

Conclusão

Aprendemos as três maneiras diferentes de ler o JSON no PySpark DataFrame. Primeiro, aprendemos como usar o método read_json() que está disponível no módulo Pandas para ler JSON para PySpark DataFrame. Em seguida, aprendemos como ler os arquivos JSON de uma ou várias linhas usando o método spark.read.json() com option(). Para ler vários arquivos JSON por vez, precisamos passar uma lista de nomes de arquivos para esse método. Usando PySpark SQL, o arquivo JSON é lido na exibição temporária e o DataFrame é exibido usando a consulta SELECT.