如何编写使用Java用文本文件分隔的spark数据框选项卡

问题描述 投票:0回答:1

我有一个Spark Dataset,其中包含许多列,这些列必须使用制表符分隔符写入文本文件。使用csv可以轻松指定该选项,但是需要一些建议,以便在使用Java时针对文本文件进行处理?

apache-spark apache-spark-sql spark-java
1个回答
0
投票
    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")
© www.soinside.com 2019 - 2024. All rights reserved.