RDD Programming Guide

RDD Operator

RDD Programming Guide

RDD 2.4.5 Operator - CN

Transaction Operator


RDD Programming Guide

RDD Transaction Operator

RDD Programming Guide

RDD Transaction Operator 2.4.5 -CN

以下是常用的 RDD Transaction 转换算子列表。

下面分别给出这些算子的基本使用示例:

map

val list = List(1,2,3)
sc.parallelize(list).map(_ * 10).foreach(println)

// 输出结果: 10 20 30 (这里为了节省篇幅去掉了换行,后文亦同)

filter

val list = List(3, 6, 9, 10, 12, 21)
sc.parallelize(list).filter(_ >= 10).foreach(println)

// 输出: 10 12 21

flatMap

flatMap(func) 与 map 类似,但每一个输入的 item 会被映射成 0 个或多个输出的 items( func 返回类型需要为 Seq)。

val list = List(List(1, 2), List(3), List(), List(4, 5))
sc.parallelize(list).flatMap(_.toList).map(_ * 10).foreach(println)

// 输出结果 : 10 20 30 40 50

flatMap 这个算子在日志分析中使用概率非常高,这里进行一下演示:拆分输入的每行数据为单个单词,并赋值为 1,代表出现一次,之后按照单词分组并统计其出现总次数,代码如下:

val lines = List("spark flume spark", "hadoop flume hive")
sc.parallelize(lines)
	.flatMap(line => line.split(" "))
	.map(word =>(word,1))
	.reduceByKey(_+_)
	.foreach(println)

// 输出:
(spark,2)
(hive,1)
(hadoop,1)
(flume,2)