Pyspark.sql.DataFrameReader.csv()
Este método se utiliza para leer los datos de los archivos CSV y almacenarlos en PySpark DataFrame. Toma las opciones mientras lee CSV en el DataFrame. Discutiremos las diferentes opciones con ejemplos en detalle. Al pasar más de un archivo CSV, es importante pasar los nombres de archivo con extensión en una lista separada por el operador de coma. Si solo está leyendo un archivo CSV, no es necesario proporcionar el nombre del archivo en una lista.
Sintaxis:
Archivo único - spark_app.read.csv('file.csv', opciones …)
Múltiples archivos – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],opciones…)
También puede ser posible separar las opciones y los nombres de los archivos.
Fila india – spark_app.read.options(opciones…).csv(‘archivo.csv’)
Múltiples archivos – spark_app.read.options(opciones…).csv([‘file1.csv’,’file2.csv’,…])
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:
Escenario 1: lectura del encabezado del archivo CSV
Vamos a crear un archivo CSV llamado 'person_skill.csv' con 5 registros que se muestra a continuación y cargarlo en PySpark DataFrame:
El parámetro de encabezado se usa para especificar los nombres de las columnas en PySpark DataFrame. Toma un valor booleano. Si es 'Verdadero', los nombres de las columnas reales que existen en el archivo CSV se especifican en el DataFrame. De lo contrario, se especifican c0, c1, c2... y los nombres de las columnas reales serán una fila. Se recomienda establecer el parámetro de encabezado en verdadero.
Ejemplo 1: Encabezado = Verdadero
importar pysparkdesde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()
# Cargue el csv llamado - person_skill.csv en habilidades con etiquetas de columna con encabezado
habilidades = linuxhint_spark_app.read.csv( 'person_skill.csv' , encabezamiento =Verdadero)
# Mostrar el marco de datos
skills.show()
Producción:
Explicación:
Podemos ver que PySpark DataFrame se crea a partir del archivo CSV con columnas y filas especificadas.
Use el siguiente comando para verificar las columnas:
habilidades.columnas
Ejemplo 2: Encabezado = Falso
importar pysparkdesde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()
# Cargue el csv llamado - person_skill.csv en habilidades con etiquetas de columna sin encabezado
habilidades = linuxhint_spark_app.read.csv( 'person_skill.csv' , encabezamiento =Falso)
# Mostrar el marco de datos
skills.show()
Producción:
Explicación:
Podemos ver que PySpark DataFrame se crea a partir del archivo CSV sin columnas existentes.
Además, las columnas existentes se almacenan como filas en PySpark DataFrame.
habilidades.columnas
Usando Read.options.csv()
Ahora, leemos el archivo CSV usando el método read.options.csv(). Aquí, debemos pasar las opciones como delimitador, encabezado, etc. en las opciones como argumentos y nombre de archivo en csv(). Pasemos el parámetro del encabezado configurándolo en 'Verdadero'.
Escenario 1:
importar pysparkdesde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()
# Uso de read.options.csv()
habilidades = linuxhint_spark_app.read. opciones ( encabezamiento =Verdadero).csv( 'person_skill.csv' )
# Mostrar el marco de datos
skills.show()
Producción:
Escenario 2: lectura del delimitador de archivo CSV
El parámetro delimitador toma el carácter que se usa para separar cada campo. Lleva una coma (,) por defecto. Usemos el mismo archivo CSV que se usa en el primer escenario y pasemos la coma (',') como delimitador.
importar pysparkdesde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()
# Usando read.options.csv() con delimitador junto con el encabezado
habilidades = linuxhint_spark_app.read. opciones ( encabezamiento =Verdadero, delimitador= ',' ).csv( 'person_skill.csv' )
# Mostrar el marco de datos
skills.show()
Producción:
Lectura de varios archivos
Hasta ahora, hemos estado leyendo un solo archivo CSV. Veamos cómo leer más de un archivo CSV. En este escenario, las filas en varios archivos se agregan en un solo PySpark DataFrame. Solo necesitamos pasar los nombres de los archivos en una lista dentro del método.
Ejemplo:
Tengamos los siguientes archivos CSV llamados 'person_skill.csv' y 'person_skill2.csv' con los siguientes datos:
Lea estos dos archivos CSV y guárdelos en un solo PySpark DataFrame.
importar pysparkdesde pyspark.sql importar SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Sugerencia de Linux' ).getOrCreate()
# Cargue 2 archivos csv llamados - person_skill.csv y person_skill2.csv en habilidades con etiquetas de columna con encabezado
habilidades = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sep= ',' , encabezamiento =Verdadero)
skills.show()
Producción:
Explicación:
El primer CSV tiene 6 registros y el segundo CSV tiene 3 registros. Podemos ver que el primer CSV se carga primero en el DataFrame. Luego, se carga el segundo CSV. Finalmente, PySpark DataFrame contiene 9 registros.
Conclusión
Leer el CSV en PySpark DataFrame es bastante simple con el método pyspark.sql.DataFrameReader.csv(). Puede ser posible pasar los parámetros de encabezado y delimitador a este método para especificar las columnas y el formato. PySpark también admite la lectura de varios archivos CSV a la vez con los métodos proporcionados junto con sus opciones. En este artículo, hemos visto los ejemplos considerando diferentes opciones. Además, hemos visto dos formas de pasar las opciones al método.