【问题标题】:Pyspark over zeppilin: unable to export to csv format?Pyspark over zeppilin:无法导出为 csv 格式?
【发布时间】:2019-07-04 21:53:49
【问题描述】:

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

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

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

我尝试了以下代码: predictions.select("概率").write.format('csv').csv('s3a://bucketname/output/x1.csv')

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

感谢任何人的帮助。

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

谢谢, 纳赛尔

【问题讨论】:

  • 您需要展平结构类型才能保存为 CSV。 CSV 不支持结构。
  • 你能分享任何资源来做到这一点吗?我dk

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


【解决方案1】:

概率是一个数组列(包含多个值),需要先转换成字符串才能保存到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')

【讨论】:

  • 谢谢拉德克。欣赏你的代码。它就像一个魅力。
猜你喜欢
  • 2019-07-14
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2020-02-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多