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')
我正在尝试将数据帧导出到 .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')