通过Zeppilin进行Pyspark:无法导出为CSV格式?

时间:2019-02-11 11:48:51

标签: pyspark export-to-csv apache-zeppelin

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

不幸的是,它保存在实木复合地板文件中。

请让我知道如何将pyspark数据帧导出为.csv文件。

我尝试了以下代码:     projections.select(“ probability”).write.format('csv').csv('s3a://bucketname/output/x1.csv')

它抛出此错误:CSV数据源不支持struct,values:array>数据类型。

感谢任何人的帮助。

注意:我的火花设置基于zepplin。

谢谢, 纳赛尔

1 个答案:

答案 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')