Saltar al contenido

Cómo manejar null valores al escribir en parquet desde Spark

Es fundamental interpretar el código bien antes de aplicarlo a tu trabajo si tdeseas aportar algo puedes dejarlo en la sección de comentarios.

Solución:

Interpretaste mal SPARK-10943. Spark admite la escritura null valores a columnas numéricas.

El problema es ese null solo no lleva ningún tipo de información en absoluto

scala> spark.sql("SELECT null as comments").printSchema
root
 |-- comments: null (nullable = true)

Según el comentario de Michael Armbrust, todo lo que tienes que hacer es lanzar:

scala> spark.sql("""SELECT CAST(null as DOUBLE) AS comments""").printSchema
root
|-- comments: double (nullable = true)

y el resultado se puede escribir de forma segura en Parquet.

Escribí una solución pyspark para esto (df es un marco de datos con columnas de NullType):

# get dataframe schema
my_schema = list(df.schema)

null_cols = []

# iterate over schema list to filter for NullType columns
for st in my_schema:
    if str(st.dataType) == 'NullType':
        null_cols.append(st)

# cast null type columns to string (or whatever you'd like)
for ncol in null_cols:
    mycolname = str(ncol.name)
    df = df 
    .withColumn(mycolname, df[mycolname].cast('string'))

Sección de Reseñas y Valoraciones

¡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 *