Spark 数据帧保存在 hdfs 位置的单个文件中
Spark dataframe save in single file on hdfs location
我有数据框,我想保存在 hdfs 位置上的单个文件中。
我在这里找到了解决方案Write single CSV file using spark-csv
df.coalesce(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")
但是所有数据都将写入 mydata。csv/part-00000 我想成为 mydata.csv 文件。
这可能吗?
感谢任何帮助
无法使用标准 spark 库,但您可以使用 Hadoop API 管理文件系统 - 将输出保存在临时目录中,然后将文件移动到请求的路径。例如(在 pyspark 中):
df.coalesce(1) \
.write.format("com.databricks.spark.csv") \
.option("header", "true") \
.save("mydata.csv-temp")
from py4j.java_gateway import java_import
java_import(spark._jvm, 'org.apache.hadoop.fs.Path')
fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())
file = fs.globStatus(sc._jvm.Path('mydata.csv-temp/part*'))[0].getPath().getName()
fs.rename(sc._jvm.Path('mydata.csv-temp/' + file), sc._jvm.Path('mydata.csv'))
fs.delete(sc._jvm.Path('mydata.csv-temp'), True)
我有数据框,我想保存在 hdfs 位置上的单个文件中。
我在这里找到了解决方案Write single CSV file using spark-csv
df.coalesce(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")
但是所有数据都将写入 mydata。csv/part-00000 我想成为 mydata.csv 文件。
这可能吗?
感谢任何帮助
无法使用标准 spark 库,但您可以使用 Hadoop API 管理文件系统 - 将输出保存在临时目录中,然后将文件移动到请求的路径。例如(在 pyspark 中):
df.coalesce(1) \
.write.format("com.databricks.spark.csv") \
.option("header", "true") \
.save("mydata.csv-temp")
from py4j.java_gateway import java_import
java_import(spark._jvm, 'org.apache.hadoop.fs.Path')
fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())
file = fs.globStatus(sc._jvm.Path('mydata.csv-temp/part*'))[0].getPath().getName()
fs.rename(sc._jvm.Path('mydata.csv-temp/' + file), sc._jvm.Path('mydata.csv'))
fs.delete(sc._jvm.Path('mydata.csv-temp'), True)