我有一个Spark Dataset,其中包含许多列,这些列必须使用制表符分隔符写入文本文件。使用csv可以轻松指定该选项,但是需要一些建议,以便在使用Java时针对文本文件进行处理?
yourcsvDf
.coalesce(1) // if you want to save as single file
.write
.option("sep", "\t")
.option("encoding", "UTF-8")
.csv("outputpath")
与编写csv相同,但此处需要使用制表符分隔符。
是的,正如您在评论中提到的,如果要重命名该文件,则可以执行以下操作。
import org.apache.hadoop.fs.FileSystem;
FileSystem fs = FileSystem.get(spark.sparkContext.hadoopConfiguration);
fs.rename(new Path("outputpath"), new Path(outputpath.txt))
注意:1)如果您的输出路径下有多个文件,则可以使用fs.globStatus,在这种情况下,coalesce(1)
将生成单个csv,因此不需要。2)如果您使用的是s3而不是hdfs,则可能需要在进行重命名之前进行以下设置...
spark.sparkContext.hadoopConfiguration.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")