我有一个用例,需要将输出作为一个单独的文件写入现有hdfs目录下。当我使用sparkcontext.saveashadoopfile()方法时,抛出一个异常,表示输出目录已经存在。目前,我可以使用hadoop客户机库来完成它,并将其作为spark的任务启动,下面是代码示例代码段。我想知道我们是否可以用spark的库函数来完成这项工作?
使用标准hadoop客户机库编写的代码。
val hdfs = FileSystem.get(getHDFSConfiguration(hadoopConf))
val outputFile = new Path(newPath)
hdfs.createNewFile(outputFile)
hdfs.append(outputFile)
.writeBytes(content)
spark版本:2.3.x
2条答案
按热度按时间pbgvytdp1#
如果使用的hadoop版本大于0.20.0,则可以在hdfs-site.xml中设置此属性
然后可以使用文件系统的.append将数据添加到现有的数据路径中。
7uhlpewt2#
一种方法是创建一个dataframe并将其数据保存到一个文件中
请注意,如果不将coalesce设置为1,将获得一些文件而不是单个文件。要做到这一点,你需要
我假设您希望将数据保存为csv,但是还有其他多种格式,如parquet、avro、orc等,它们在某些方面比csv更有效