当列为 'struct' 类型时,如何将文件写入 csv?
How to write a file to csv when a column is 'struct' type?
我有一个需要写入 CSV 的输出 spark Dataframe。 Dataframe 中的一列是 'struct' 类型,csv 不支持该列。我正在尝试将其转换为字符串或转换为 pandas DF 但没有任何效果。
userRecs1=userRecs.withColumn("recommendations", explode(userRecs.recommendations))
#userRecs1.write.csv('/user-home/libraries/Sampled_data/datasets/rec_per_user.csv')
预期结果:建议列为字符串类型,以便将其拆分为两个单独的列并写入 csv。
实际结果:
(推荐栏是struct类型,不能写入csv)
ID_CTE| recommendations|
+-------+-----------------+
|3974081| [2229,0.8915096]|
|3974081| [2224,0.8593609]|
|3974081| [2295,0.8577902]|
|3974081|[2248,0.29922757]|
|3974081|[2299,0.28952467]|
以下命令将展平您的StructType
到单独的命名列中:
userRecs1 \
.select('ID_CTE', 'recommendations.*') \
.write.csv('/user-home/libraries/Sampled_data/datasets/rec_per_user.csv')
另一种选择是将结构列转换为 json,然后保存:
from pyspark.sql import functions as f
userRecs1 \
.select(f.col('ID_CTE'), f.to_json(f.col('recommendations.'))) \
.write.csv('/user-home/libraries/Sampled_data/datasets/rec_per_user.csv')
我有一个需要写入 CSV 的输出 spark Dataframe。 Dataframe 中的一列是 'struct' 类型,csv 不支持该列。我正在尝试将其转换为字符串或转换为 pandas DF 但没有任何效果。
userRecs1=userRecs.withColumn("recommendations", explode(userRecs.recommendations))
#userRecs1.write.csv('/user-home/libraries/Sampled_data/datasets/rec_per_user.csv')
预期结果:建议列为字符串类型,以便将其拆分为两个单独的列并写入 csv。
实际结果: (推荐栏是struct类型,不能写入csv)
ID_CTE| recommendations|
+-------+-----------------+
|3974081| [2229,0.8915096]|
|3974081| [2224,0.8593609]|
|3974081| [2295,0.8577902]|
|3974081|[2248,0.29922757]|
|3974081|[2299,0.28952467]|
以下命令将展平您的StructType
到单独的命名列中:
userRecs1 \
.select('ID_CTE', 'recommendations.*') \
.write.csv('/user-home/libraries/Sampled_data/datasets/rec_per_user.csv')
另一种选择是将结构列转换为 json,然后保存:
from pyspark.sql import functions as f
userRecs1 \
.select(f.col('ID_CTE'), f.to_json(f.col('recommendations.'))) \
.write.csv('/user-home/libraries/Sampled_data/datasets/rec_per_user.csv')