PySpark Leer JSON()

Pyspark Leer Json



Mientras trabaja con PySpark DataFrames, debe almacenarse en PySpark DataFrame si desea procesar los datos JSON. Después de almacenar en el DataFrame, podemos aplicar las diferentes operaciones y métodos en los datos. Además, hay muchas ventajas si convertimos JSON a PySpark DataFrame, ya que es simple y podemos transformar/particionar los datos de una manera más sencilla.

Tema de contenidos:

Leer JSON en PySpark DataFrame usando Pandas.read_json()







Lectura de JSON en PySpark DataFrame mediante Spark.read.json()



Lectura de JSON en PySpark DataFrame mediante PySpark SQL



En este tutorial, veremos cómo leer JSON en PySpark DataFrame usando pandas.read_json(), spark.read.json() y spark.sql. En todos los escenarios, veremos los diferentes ejemplos considerando los diferentes formatos JSON.





Instale la biblioteca PySpark antes de implementar los siguientes ejemplos.

pip instalar pyspark

Después de la instalación exitosa, puede ver el resultado de la siguiente manera:



Leer JSON en PySpark DataFrame usando Pandas.read_json()

En PySpark, el método createDataFrame() se usa para crear el DataFrame directamente. Aquí, solo necesitamos pasar el archivo/ruta JSON al archivo JSON a través del método pandas.read_json(). Este método read_json() toma el nombre de archivo/ruta que está disponible en el módulo Pandas. Por eso es necesario importar y utilizar el módulo Pandas.

Sintaxis:

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

Ejemplo:

Vamos a crear un archivo JSON llamado 'student_skill.json' que contenga 2 registros. Aquí, las claves/columnas son “Estudiante 1” y “Estudiante 2”. Las filas son nombre, edad, habilidad1 y habilidad2.

importar pyspark

importar pandas

desde pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()

# Usando pandas.read_json()

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

candidate_skills.show()

Producción:

Podemos ver que los datos JSON se convierten a PySpark DataFrame con columnas y filas específicas.

2. Leer JSON en PySpark DataFrame usando Spark.read.json()

read.json() es un método similar a read_json() en Pandas. Aquí, read.json() toma una ruta a JSON o directamente al archivo JSON y lo carga directamente en PySpark DataFrame. No es necesario utilizar el método createDataFrame() en este escenario. Si desea leer varios archivos JSON a la vez, debemos pasar una lista de nombres de archivos JSON a través de una lista separada por comas. Todos los registros JSON se almacenan en un solo DataFrame.

Sintaxis:

Archivo único - spark_app.read.json( 'nombre_archivo.json' )

Múltiples archivos - spark_app.read.json([ 'archivo1.json' , 'archivo2.json' ,...])

Escenario 1: leer JSON con una sola línea

Si su archivo JSON está en formato record1, record2, record3… (una sola línea), podemos llamarlo JSON con una sola línea. Spark procesa estos registros y los almacena en PySpark DataFrame como filas. Cada registro es una fila en PySpark DataFrame.

Vamos a crear un archivo JSON llamado 'candidate_skills.json' que contenga 3 registros. Lea este JSON en PySpark DataFrame.

importar pyspark

desde pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()

# Leer candidato_skills.json en PySpark DataFrame

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

candidate_skills.show()

Producción:

Podemos ver que los datos JSON se convierten a PySpark DataFrame con registros y nombres de columna especificados.

Escenario 2: leer JSON con varias líneas

Si su archivo JSON tiene varias líneas, debe usar el método read.option().json() para pasar el parámetro multilínea que debe establecerse en verdadero. Esto nos permite cargar JSON con varias líneas en PySpark DataFrame.

leer.opción( 'multilínea' , 'verdadero' ).json( 'nombre_archivo.json' )

Vamos a crear un archivo JSON llamado 'multi.json' que contenga 3 registros. Lea este JSON en PySpark DataFrame.

importar pyspark

desde pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()

# Leer multi.json (que tiene varias líneas) en PySpark DataFrame

candidato_habilidades = linuxhint_spark_app.read.option( 'multilínea' , 'verdadero' ).json( 'multi.json' )

candidate_skills.show()

Producción:

Escenario 3: Leer varios JSON

Ya discutimos en la fase inicial de este tutorial sobre múltiples archivos JSON. Si desea leer varios archivos JSON a la vez y almacenarlos en un solo PySpark DataFrame, debemos pasar una lista de nombres de archivo al método read.json().

Vamos a crear dos archivos JSON llamados 'candidate_skills.json' y 'candidate_skills2.json' y cargarlos en PySpark DataFrame.

El archivo “candidate_skills.json” contiene tres registros.

El archivo 'candidate_skill2.json' contiene un solo registro.

importar pyspark

desde pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()

# Lee los archivos proudc_skills y ​skills2 de ​candidate a la vez en PySpark DataFrame

Candidato_habilidades = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidato_habilidades2.json' ])

candidate_skills.show()

Producción:

Finalmente, el DataFrame contiene cuatro registros. Los primeros tres registros pertenecen al primer JSON y los últimos registros pertenecen al segundo JSON.

Lectura de JSON en PySpark DataFrame mediante Spark.read.json()

read.json() es un método similar a read_json() en Pandas. Aquí, read.json() toma una ruta a JSON o directamente al archivo JSON y lo carga directamente en PySpark DataFrame. No es necesario utilizar el método createDataFrame() en este escenario. Si desea leer varios archivos JSON a la vez, debemos pasar una lista de nombres de archivos JSON a través de una lista separada por comas. Todos los registros JSON se almacenan en un solo DataFrame.

Sintaxis:

Archivo único - spark_app.read.json( 'nombre_archivo.json' )

Múltiples archivos - spark_app.read.json([ 'archivo1.json' , 'archivo2.json' ,...])

Escenario 1: leer JSON con una sola línea

Si su archivo JSON está en formato record1, record2, record3… (una sola línea), podemos llamarlo JSON con una sola línea. Spark procesa estos registros y los almacena en PySpark DataFrame como filas. Cada registro es una fila en PySpark DataFrame.

Vamos a crear un archivo JSON llamado 'candidate_skills.json' que contenga 3 registros. Lea este JSON en PySpark DataFrame.

importar pyspark

desde pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()

# Leer candidato_skills.json en PySpark DataFrame

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

candidate_skills.show()

Producción:

Podemos ver que los datos JSON se convierten a PySpark DataFrame con registros y nombres de columna especificados.

Lectura de JSON en PySpark DataFrame mediante PySpark SQL

Puede ser posible crear una vista temporal de nuestros datos JSON utilizando PySpark SQL. Directamente, podemos proporcionar el JSON en el momento de crear la vista temporal. Observe la siguiente sintaxis. Después de eso, podemos usar el comando SELECCIONAR para mostrar el marco de datos de PySpark.

Sintaxis:

chispa_aplicación.sql( 'CREAR VISTA TEMPORAL VIEW_NAME UTILIZANDO OPCIONES json (ruta 'file_name.json')' )

Aquí, 'VIEW_NAME' es la vista de los datos JSON y 'file_name' es el nombre del archivo JSON.

Ejemplo 1:

Considere el archivo JSON que se usa en los ejemplos anteriores: 'candidate_skills.json'. Seleccione todas las filas del DataFrame usando SELECCIONAR con el operador '*'. Aquí, * selecciona todas las columnas del PySpark DataFrame.

importar pyspark

importar pandas

desde pyspark.sql importar SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()

# Usando spark.sql para crear VIEW desde el JSON

candidato_habilidades = linuxhint_spark_app.sql( 'CREAR VISTA TEMPORAL Candidate_data UTILIZANDO OPCIONES json (ruta 'candidate_skills.json')' )

# Use la consulta SELECCIONAR para seleccionar todos los registros de Candidate_data.

linuxhint_spark_app.sql( 'SELECCIONAR * de Candidate_data' ).espectáculo()

Producción:

El número total de registros en PySpark DataFrame (leídos de JSON) es 3.

Ejemplo 2:

Ahora, filtre los registros en PySpark DataFrame según la columna de edad. Use el operador 'mayor que' en la edad para obtener las filas con una edad mayor a 22.

# Use la consulta SELECCIONAR para seleccionar registros con edad > 22.

linuxhint_spark_app.sql( 'SELECCIONE * de Candidate_data donde la edad> 22' ).espectáculo()

Producción:

Solo hay un registro en PySpark DataFrame con una edad superior a 22.

Conclusión

Aprendimos las tres formas diferentes de leer el JSON en PySpark DataFrame. Primero, aprendimos a usar el método read_json() que está disponible en el módulo Pandas para leer JSON en PySpark DataFrame. A continuación, aprendimos a leer archivos JSON de una o varias líneas mediante el método spark.read.json() con opción(). Para leer varios archivos JSON a la vez, debemos pasar una lista de nombres de archivos a este método. Con PySpark SQL, el archivo JSON se lee en la vista temporal y el marco de datos se muestra mediante la consulta SELECT.