当前位置: 首页 > 知识库问答 >
问题:

Spark dataframe保存在hdfs位置上的单个文件中[重复]

黄修永
2023-03-14

我有dataframe,我想在hdfs位置上保存在单个文件中。

我在这里找到了解决方案,使用spark-csv编写单个CSV文件

df.coalesce(1)
    .write.format("com.databricks.spark.csv")
    .option("header", "true")
    .save("mydata.csv")

这可能吗?

任何帮助都很感激

共有1个答案

阎晋
2023-03-14

使用标准的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)
 类似资料:
  • 我想将一个文件保存在与应用程序jar文件所在位置相同的文件夹中。我正试图通过以下方式实现这一点: 如果我从Intellij运行项目,返回的路径是,如果我从命令行运行它,返回的路径是。这是应该发生的吗?另外,如何才能将jar路径仅返回到?

  • 问题内容: 我有以下代码可以处理服务器上的文件上传。但是如何将文件保存到服务器上的特定位置 问题答案: 您应该使用which代替一个目录。 或者,如果你真的想临时文件移动到另一个位置 之后 ,使用。

  • 我在AWS上有一个Hadoop/Yarn集群设置,我有一个主服务器和三个从服务器。我已经验证有3个活动节点在端口50070和8088上运行。我在客户机部署模式下测试了一个spark工作,一切都很好。 当我尝试使用。我得到以下错误。

  • 我试图实现与此相同的功能,所以除了我的文件位于Azure Data Lake Gen2,我在Databricks Notebook中使用pyspark之外,将Spark dataframe保存在hdfs位置上的单个文件中。 下面是我用来重命名文件的代码段 1)重命名databricks(pyspark)写入Azure DataLakeGen2的文件是否正确,如果不正确,我还能如何完成?

  • 假设我有一个Spark数据框,我想将其另存为CSV文件。在Spark 2.0.0之后,DataFrameWriter类直接支持将其保存为CSV文件。 默认行为是将输出保存在多个部分-*。提供的路径中的csv文件。 如何使用以下选项保存DF: 路径映射到确切的文件名,而不是文件夹 首行可用标题 另存为单个文件,而不是多个文件 处理它的一种方法是合并DF,然后保存文件。 然而,这在将其收集到主机上时存

  • 我试图将不同类别的图像保存在一个文件夹中,并检索它们。 watermark.php是 一些图像被保存在上传文件夹和临时文件夹和数据库中,并且水印被应用在它们上...但是现在当我试图上传图像时...它只在上传文件夹中,并且显示一个致命的错误:- 我怎样才能解决这个问题。。并且.PNG图像也没有保存