我正在尝试将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]的任何想法?
答案 0 :(得分:7)
parallelize
需要Seq
。传入String(或StringBuilder)时,它会将字符串视为Seq[Char]
。
你必须自己创建字符串序列。例如,如果您想要每行一个字符串,只需使用sc.parallelize(Seq("#", "# Version 1"))
。
要将其缩小为单个输出文件,请使用headerFile.coalesce(1).saveAsTextFile(path)
。