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

Spark-使用自定义文件名写入数据帧[重复]

娄弘
2023-03-14

我有一个Spark(2.4)数据帧,我想将其编写为管道分隔文件。应该是很简单的

val myDF = spark.table("mySchema.myTable")
myDF.coalesce(1).write.format("csv").options("header", "true").options("delimiter", "|").save("/tmp/myDF")

我在/tmp/myDF中得到一个part-*. csv文件。

到目前为止,一切顺利。但我实际上希望文件名是特定的,例如,tmp/myDF。csv

但是在save中输入这个字符串只会创建一个名为myDF的dir。csv并创建零件*。csv文件。

有没有办法用一个特定的名称来编写数据帧?

共有1个答案

文建业
2023-03-14

你不能用Spark那样做

您可以稍后访问fileSystem重命名文件

val directory = new File(/tmp/myDF)

if (directory.exists && directory.isDirectory) {
   val file = directory.listFiles.filter(_.getName.endsWith(".csv")).head
   file.renameTo("myDF.csv")
}
 类似资料:
  • 我正在使用Spark 2.3,我需要将Spark数据帧保存到csv文件中,我正在寻找更好的方法。。查看相关/类似的问题,我发现了这个问题,但我需要一个更具体的: 如果DataFrame太大,如何避免使用Pandas?因为我使用了函数(下面的代码),它产生了: 内存不足错误(无法分配内存)。 使用文件I/O直接写入csv是更好的方法吗?它可以保留分隔符吗? 使用df。聚结(1)。写选项(“标题”、“

  • 我正在尝试使用pysparkn和spack-csv使用以下代码将火花数据帧写入s3 但是,我得到的错误是“输出目录已经存在”,我确信输出目录在作业开始之前不存在,我尝试使用不同的输出目录名称运行,但写入仍然失败。 如果我在作业失败后查看s3桶,我发现很少有零件文件是由火花写入的,但当它尝试写入更多时它失败了,脚本在本地运行良好,我在aws集群上使用10个火花执行器。有人知道这段代码有什么问题吗?

  • 我试图做一些非常简单的事情,我有一些非常愚蠢的挣扎。我想这一定与对火花的基本误解有关。我非常感谢任何帮助或解释。 我有一张非常大的桌子(~3 TB,~300毫米行,25k个分区),在s3中保存为拼花地板,我想给一些人一个很小的拼花文件样本。不幸的是,这要花很长时间才能完成,我不明白为什么。我尝试了以下方法: 然后当这不起作用时,我尝试了这个,我认为应该是一样的,但我不确定。(我添加了,以尝试调试。

  • 我在pandas中有一个数据帧,我想把它写到CSV文件中。我使用的是: 并得到错误: 有没有什么方法可以很容易地解决这个问题(例如,我的数据帧中有unicode字符)?还有,有没有一种方法可以使用“to-tab”方法(我认为不存在)写入以制表符分隔的文件,而不是CSV?

  • 我有一个数据框 我想将写入csv文件,但不使用列。第一行是我的自定义字符串,其余是。例如: 我可以用pandas来做这件事吗?或者我必须手动循环内容并写入文件?

  • null 非常感谢任何指向文档或非常基本的示例的指针。