今天在Windows上跑Scala词频统计的时候,发现RDD文件并不能直接保存到本地的txt文件中,如果使用saveAsTextFile方法的话,会将RDD数据以文件夹且数据不能直接使用
但是使用其他的方法又比较麻烦,对新手很不友好,这里教大家一个小方法
将RDD数据使用toArray()转为数组即可遍历写入本地文件了,如果有更好的方法,私信笔者,毕竟该方法Scala官方已经不推荐使用了。
代码如下:
package day01
import java.io.PrintWriter
import java.io.File
import org.apache.spark.{SparkConf, SparkContext}
object countWord_2 {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("countWord_2").setMaster("local")
val sc = new SparkContext(conf)
System.setProperty("hadoop.home.dir", "E:\\school_Study\\spark\\hadoop")
val input = "F:\\score.txt"
val count = sc.textFile(input).flatMap(x => x.split(" ")).map(x => (x, 1)).reduceByKey((x, y) => x + y)
//文件写入
val writer = new PrintWriter(new File("res.txt"))
count.foreach(x => println(String.valueOf(x._1 + " " + x._2)))
val tuples = count.toArray()
for (elem <- tuples) {
writer.write(elem._1 + " " + elem._2 + "\n")
}
writer.close()
}
}
使用的Scala版本为:scala-2.10.5