Pyspark超过zeppilin:无法导出为CSV格式?

问题描述 投票:1回答:1

我想数据框导出到.csv文件S3桶。

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

有人可以请让我知道,如何让出口pyspark数据帧为.csv文件。

我尝试以下代码:predictions.select( “概率”).write.format( 'CSV')的.csv( 'S3A://bucketname/output/x1.csv')

它引发此错误:CSV数据源不支持结构,值:阵列>数据类型。

欣赏别人的帮助。

注:我的火花的设置是基于在飞艇。

谢谢,纳瑟尔

pyspark export-to-csv apache-zeppelin
1个回答
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')
© www.soinside.com 2019 - 2024. All rights reserved.