【问题标题】:Saving dataframe records in a tab delimited file将数据框记录保存在制表符分隔的文件中
【发布时间】:2019-09-22 18:32:11
【问题描述】:

如何将DataFrame 的记录保存到制表符分隔的输出文件中? DataFame 如下所示:

>>> csvDf.show(2,False)

1. |1  |Eldon Base for stackable storage shelf, platinum  |Muhammed
MacIntyre|3  |-213.25|38.94 |35   |Nunavut|Storage & Organization   
|0.8 | 
2. |2  |1.7 Cubic Foot Compact "Cube" Office Refrigerators|Barry
French      |293|457.81 |208.16|68.02|Nunavut|Appliances            
|0.58|

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    只需将delimiter 选项传递给作者:

    csvDf.write.option("delimiter", "\t").csv(output_path)
    

    在 Spark 1.6 中使用 spark-csv package(查看 README 了解详细说明)和相同的选项:

    csvDf.write.option("delimiter", "\t").format("com.databricks.spark.csv").save(output_path)
    

    【讨论】:

    • 我使用的是 spark 1.6,我相信它没有数据框的 csv 选项。
    【解决方案2】:

    在 Spark 2.4.3 中是:

    csvDf
    .write
    .option("sep", "\t")
    .option("encoding", "UTF-8")
    .csv(targetFilePath)
    

    【讨论】:

      【解决方案3】:

      这对我有用...

      csvDf.rdd.map(lambda x: '\t'.join(x)).coalesce(1).saveAsTextFile('/output/csv/6.csv')

      【讨论】:

      • 以这种方式使用合并会将数据帧重新分区到一个分区,如果大于 JVM 可能会导致内存溢出问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多