我正在尝试将数据帧导出为.csv文件到S3存储桶。
不幸的是,它保存在实木复合地板文件中。
请让我知道如何将pyspark数据帧导出为.csv文件。
我尝试了以下代码: projections.select(“ probability”).write.format('csv').csv('s3a://bucketname/output/x1.csv')
它抛出此错误:CSV数据源不支持struct,values:array>数据类型。
感谢任何人的帮助。
注意:我的火花设置基于zepplin。
谢谢, 纳赛尔
答案 0 :(得分:0)
概率是一个数组列(包含多个值),需要先转换为字符串,然后才能将其保存到csv。一种方法是使用udf(用户定义函数):
from pyspark.sql.functions import udf
from pyspark.sql.functions import column as col
from pyspark.sql.types import StringType
def string_from_array(input_list):
return ('[' + ','.join([str(item) for item in input_list]) + ']')
ats_udf = udf(string_from_array, StringType())
predictions = predictions.withColumn('probability_string', array_to_string_udf(col("probability")))
然后您可以保存数据集:
predictions.select("probability_string").write.csv('s3a://bucketname/output/x1.csv')