WordCount代码如下:
import org.apache.spark.{SparkContext, SparkConf}
/**
* Created by zhangph on 2015/11/25.
*/
object WordCount {
def main (args: Array[String]) {
if(args.length < 1){
System.err.println("Usage: <file>")
System.exit(1);
}
val conf = new SparkConf();
val sc = new SparkContext(conf)
val line = sc.textFile(args(0))
val result = line.flatMap(_.split(" ")).map(x => (x(1), 1)).reduceByKey(_+_)
//result.collect().foreach(println)
result.saveAsTextFile(args(1))
sc.stop()
}
}
val line = sc.textFile(args(0))
使用textFile函数将文件转换为一个RDD,该函数采用Hadoop中的TextInputFormat解析输入数据,textFile中的每个Hadoop Block相当于一个RDD分区。
val result = line.flatMap(_.split(" ")).map(x => (x(1), 1)).reduceByKey(_+_)
flatMap将加载的数据使用空格分割后生成新的RDD;
map将每条记录加1之后生成新的RDD;
reduceByKey将key相同的关键字的数据集合到一起进行函数运算。
result.collect().foreach(println)
result.saveAsTextFile(args(1))
Actions 算子
第一句是将MapReduce的结果先toArray然后再输出每个元素;
第二句是将结果写入到文件中。
The only way to survive was to enjoy the good moments and not dwell too much on the bed.