从 spark 数据帧创建一个非 hdfs csv

Create a non-hdfs csv from spark dataframe

我想使用 spark DataFrame 创建一个非 hdfs .csv 文件。怎么办呢?

此非 hdfs .csv 文件的目的是对其使用 read_csv() 并将其加载回 pandas DataFrame。

我尝试使用 toPandas(),但我的 spark DataFrame 中有 4500 万条记录,而且速度非常慢。

如果您有 4500 万条记录,您可能需要创建一组 spark 会自动执行的 csv 文件。根据您要保存数据的位置,路径会有所不同。例如,如果您想写入 S3,您将提供这样的路径。

df.write.csv("s3://my-bucket/path/to/folder/")

您可能还想在写入之前手动重新分区数据以获得准确数量的输出文件。

如果您尝试写入 s3,有几种方法可以做到:

  1. 使用柱状优化的Parquet

假设你的数据框是 df:

# Spark takes care of everything here, but you will have multiple files in the folder
df.write.parquet('s3a://path/filename')
  1. 使用更传统的行格式的 csv
# Spark takes care of everything here, and you will have a single file in the end
df.repartition(1).write\
.option('header', 'True')\
.format('csv')\
.save('s3a://path/')