Удаление нулей из Spark Dataframe без использования пандPython

Программы на Python
Anonymous
Удаление нулей из Spark Dataframe без использования панд

Сообщение Anonymous »

new_DF=old_DF\
.select(col("id"),
col("COL1"),
col("COL2"),
).distinct()

new_JSON_DF = new_DF\
.withColumn("PROP",struct(col("COL1"),col("COL2")))\
.drop("COL1", "COL2")

Кол1, столбец 2 могут иметь нули.
Если данные выглядят следующим образом:
id COL1 COL2

1 null def

2 abc null

3 null null

Я хочу, чтобы результат в новом JSON DF был таким:
{
id : 1
PROP : {
"COL2" : "def"
}
},
{
id : 2
PROP : {
"COL1" : "abc"
}
},
{
id : 3
PROP : {}
}


Вышеупомянутый фрейм данных является фреймом данных Spark, и я пытался его использовать
new_JSON_DF = new_JSON_DF.withColumn("PROP", map_filter("PROP", lambda k, v: v.isNotNull()))

Это не работает, и я также пробовал использовать pandas, и следующая команда работает, но поскольку функция toPandas имеет ограничение на память, она выдает ошибку памяти.pandas_df = new_JSON_DF.toPandas()
pandas_df['PROP'] = pandas_res_df['PROP'].apply(lambda x: {k: v for k, v in x.items() if v is not None})

schema = StructType([
StructField("id", StringType(), True),
StructField("PROP", MapType(StringType(), StringType()), True)
])

new_JSON_DF = spark.createDataFrame(pandas_df, schema=schema)


Подробнее здесь: https://stackoverflow.com/questions/787 ... ing-pandas

Вернуться в «Python»