Saltar al contenido

¿Cómo obtener la definición del esquema de un marco de datos en PySpark?

Solución:

Sí, es posible. Usar DataFrame.schema property

schema

Devuelve el esquema de este DataFrame como pyspark.sql.types.StructType.

>>> df.schema
StructType(List(StructField(age,IntegerType,true),StructField(name,StringType,true)))

Nuevo en la versión 1.3.

El esquema también se puede exportar a JSON y volver a importar si es necesario.

Puede reutilizar el esquema para el marco de datos existente

l = [('Ankita',25,'F'),('Jalfaizy',22,'M'),('saurabh',20,'M'),('Bala',26,None)]
people_rdd=spark.sparkContext.parallelize(l)
schemaPeople = people_rdd.toDF(['name','age','gender'])

schemaPeople.show()

+--------+---+------+
|    name|age|gender|
+--------+---+------+
|  Ankita| 25|     F|
|Jalfaizy| 22|     M|
| saurabh| 20|     M|
|    Bala| 26|  null|
+--------+---+------+

spark.createDataFrame(people_rdd,schemaPeople.schema).show()

+--------+---+------+
|    name|age|gender|
+--------+---+------+
|  Ankita| 25|     F|
|Jalfaizy| 22|     M|
| saurabh| 20|     M|
|    Bala| 26|  null|
+--------+---+------+

Simplemente use df.schema para obtener el esquema subyacente del marco de datos

schemaPeople.schema

StructType(List(StructField(name,StringType,true),StructField(age,LongType,true),StructField(gender,StringType,true)))

El siguiente código le dará una definición de esquema tabular bien formateada del marco de datos conocido. Muy útil cuando tiene una gran cantidad de columnas y cuando la edición es engorrosa. Ahora puede aplicarlo a su nuevo marco de datos y editar manualmente las columnas que desee en consecuencia.

from pyspark.sql.types import StructType

schema = [i for i in df.schema] 

Y luego, desde aquí, tienes tu nuevo esquema:

NewSchema = StructType(schema)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *