我有一个数据框,数据如下。
+---------------+-------+
|category |marks |
+---------------+-------+
|cricket |1.0 |
|tennis |1.0 |
|football |2.0 |
+---------------+-------+
我想把上面的Dataframe写进一个csv文件中,文件名将被创建为当前的时间戳。
generatedDataFrame.write.mode ("append")
.format("com.databricks.spark.csv").option("delimiter", ";").save("./src/main/resources-"+LocalDateTime.now()+".csv")
但是这个代码不能正常工作。给出以下错误
java.io.IOException: Mkdirs failed to create file
使用scala和spark有更好的方法来实现这一点吗?而且,即使我试图创建带有时间戳代码的文件,也会创建一个带有时间戳的目录,并且在该目录中会创建一个带有随机名称的csv数据。如何将时间戳文件名添加到这些csv文件而不是创建目录?
2条答案
按热度按时间ghhaqwfi1#
df.write.csv将始终使用指定的名称创建一个文件夹,并将输出csv文件放置在该文件夹中。
如果要将单个csv文件作为输出,并将名称作为时间戳,则可以使用以下代码:
rqenqsqc2#
您应该使用src/main/resources而不是./src/main/resources。您可以从命令行检查目录创建的权限。另外,直接在路径中使用localdatetime.now会像这样“2021-03-01t13:39:09.646”,不确定这是否是您想要的,甚至它是否对hdfs路径有效(字符像[:]),因此建议也使用日期格式。