csv - Spark 数据帧保存在 hdfs 位置的单个文件中

标签 csv apache-spark dataframe databricks

这个问题在这里已经有了答案:





How to save RDD data into json files, not folders

(3 个回答)


4年前关闭。




我有数据框,我想保存在 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)

关于csv - Spark 数据帧保存在 hdfs 位置的单个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792434/

相关文章:

c - 在 C 中读取 .csv 文件

java - 从本地spark-submit检查远程HDFS上是否存在文件

java - 为什么 UDF 无法识别数据帧的列?

javascript - 通过更改解析字符串在同一页面上多次重用 highchart 图表

c# - 如何将阿拉伯语、希伯来语写入CSV文件?

apache-spark - 在Spark Streaming中随机获取LeaseExpiredException

python - pandas字符串替换一个圆括号后的字符串的任何值“Python仅使用单个圆括号

python - 标记数据框的索引

python - 连接两个具有 DateTime 格式的重复索引的数据帧

Python从列表列表中删除空元素