Pyspark over zeppilin:无法导出为 csv 格式?

Pyspark over zeppilin: unable to export to csv format?

我正在尝试将数据帧导出到 .csv 文件到 S3 存储桶。

不幸的是,它保存在 parquet 文件中。

有人可以告诉我如何将 pyspark 数据帧导出到 .csv 文件中。

我试过下面的代码: predictions.select("probability").write.format('csv').csv('s3a://bucketname/output/x1.csv')

它抛出这个错误:CSV 数据源不支持结构,值:数组> 数据类型。

感谢任何人的帮助。

注意:我的 spark 设置基于 zepplin。

谢谢, 纳赛尔

概率是一个数组列(包含多个值),需要先转换为字符串,然后才能将其保存为 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', ats_udf (col("probability")))

然后您可以保存您的数据集:

predictions.select("probability_string").write.csv('s3a://bucketname/output/x1.csv')