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)