将 StringBuilder 转换为 RDD[String]

Convert StringBuilder to RDD[String]

我正在尝试将 StringBuilder 对象转换为 RDD[String],但遇到了一些问题。我能够将 StringBuilder 对象放入 RDD[Char],但我需要它是一个 RDD[String]。当它作为 RDD[Char] 写入文件系统时,它每行放置 1 个字符。这是不可接受的。我将 Spark 1.2 与 Java 7 一起使用。我的代码如下

val sc = new SparkContext
val sb:StringBuilder = new StringBuilder();
    sb.append("#").append("\n");
    sb.append("# Version 1").append("\n");
val headerFile = sc.parallelize(sb, 1)
headerFile.saveAsTextFile(path)
sc.stop

关于如何将 sb 转换为 RDD[String] 的任何想法?

parallelize 期望 Seq。当您传入一个字符串(或 StringBuilder)时,它会将字符串视为 Seq[Char].

您必须自己创建字符串序列。例如,如果您希望每行一个字符串,只需使用 sc.parallelize(Seq("#", "# Version 1")).

要将其缩减为单个输出文件,请使用 headerFile.coalesce(1).saveAsTextFile(path)