Как написать вкладку искрового информационного кадра в виде текстового файла, используя java - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть набор данных spark с большим количеством столбцов, которые необходимо записать в текстовый файл с разделителем табуляции. С csv эту опцию легко указать, но нужны предложения, как обработать это для текстового файла при использовании java?

1 Ответ

1 голос
/ 06 апреля 2020

Вариант 1:

    yourDf
    .coalesce(1) // if you want to save as single file
    .write
    .option("sep", "\t")
    .option("encoding", "UTF-8")
    .csv("outputpath")

То же, что и при написании CSV, но здесь необходимо использовать разделитель табуляции.

Да, его 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 вместо hdf, вам может потребоваться установить ниже, прежде чем пытаться переименовать ...

spark.sparkContext.hadoopConfiguration.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")

Вариант 2:

Другой вариант (если вы не хотите использовать CSV API) может быть, как показано ниже

 yourDf.rdd
.coalesce(1)
.map(x => x.mkString("\t"))
.saveAsTextFile("yourfile.txt")

...