【问题标题】:Spark writes out `saveAsTextFile` in a Row() formatSpark 以 Row() 格式写出 `saveAsTextFile`
【发布时间】:2016-09-18 00:46:58
【问题描述】:

我正在尝试将这些文件从 S3 复制到 Redshift,它们都是 Row(column1=value, column2=value,...) 的格式,这显然会导致问题。如何让数据框以普通 csv 格式输出?

我这样称呼它:

# final_data.rdd.saveAsTextFile(
    #     path=r's3n://inst-analytics-staging-us-standard/spark/output',
    #     compressionCodecClass='org.apache.hadoop.io.compress.GzipCodec'
    # )

我也试过用spark-csv 模块写出来,它似乎忽略了我所做的任何计算,只是将原始 parquet 文件格式化为 csv 并将其转储出来。

我是这样称呼的:

df.write.format('com.databricks.spark.csv').save('results')

【问题讨论】:

  • spark-csv 方法应该可以工作。也许您应该在您的final_data DataFrame 上调用write
  • Derp 这完全是问题所在,我刚刚弄清楚了;)感谢您指出!如果您做出回答,我会给您答案。

标签: python csv amazon-s3 apache-spark pyspark


【解决方案1】:

spark-csv 方法是一种很好的方法,应该可以工作。通过查看您的代码,您似乎在原始 DataFrame df 上调用 df.write,这就是它忽略您的转换的原因。为了正常工作,也许你应该这样做:

final_data = # Do your logic on df and return a new DataFrame        
final_data.write.format('com.databricks.spark.csv').save('results')

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2019-01-21
    相关资源
    最近更新 更多