Cómo comparar dos esquemas en Databricks notebook en Python.
Voy a ingresar datos utilizando un cuaderno de Databricks. Quiero validar el esquema de los datos ingresados contra lo que espero que sea el esquema de estos datos.
Entonces básicamente tengo:
validation_schema = StructType([
StructField("a", StringType(), True),
StructField("b", IntegerType(), False),
StructField("c", StringType(), False),
StructField("d", StringType(), False)
])
data_ingested_good = [("foo",1,"blabla","36636"),
("foo",2,"booboo","40288"),
("bar",3,"fafa","42114"),
("bar",4,"jojo","39192"),
("baz",5,"jiji","32432")
]
data_ingested_bad = [("foo","1","blabla","36636"),
("foo","2","booboo","40288"),
("bar","3","fafa","42114"),
("bar","4","jojo","39192"),
("baz","5","jiji","32432")
]
data_ingested_good.printSchema()
data_ingested_bad.printSchema()
validation_schema.printSchema()
He visto preguntas similares pero las respuestas siempre están en Scala.
davy.ai
Para validar el esquema de los datos ingestados con respecto al esquema esperado utilizando el cuaderno de Databricks y Python, se pueden seguir los siguientes pasos:
StructType
yStructField
:data_ingested_good
ydata_ingested_bad
) en un DataFrame de Spark:validate
:La función
validate
verifica si todas las columnas en el DataFrame están presentes y son del tipo de dato correcto según se especifica en el argumentoschema
. También verifica si hay columnas adicionales en el DataFrame que no están en el esquema. La función devuelveTrue
si el DataFrame es válido con respecto al esquema, yFalse
en caso contrario.Nota: Es importante importar las librerías de Spark necesarias y utilizar la función
col
para asegurar que el código se ejecute sin errores.Este código se puede ejecutar directamente en un cuaderno de Databricks utilizando el tiempo de ejecución de Databricks para Apache Spark.