笔记一
参考 文章http://dongxicheng.org/framework-on-yarn/spark-scala-writing-application/
通过RDD转换算子操作和转换RDD,对于WordCount而言,首先需要从输入数据中每行字符串中解析出单词,然后将相同单词放到一个桶中,最后统计每个桶中每个单词出现的频率,举例如下:
1
2
3
|
val
result
=
hadoopRdd.flatMap{
case
(key, value)
=
> value.toString().split(
"\\s+"
);
}.map(word
=
> (word,
1
)). reduceByKey (
_
+
_
)
|
其中,flatMap函数可以将一条记录转换成多条记录(一对多关系),map函数将一条记录转换为另一条记录(一对一关系),reduceByKey函数将key相同的数据划分到一个桶中,并以key为单位分组进行计算,这些函数的具体含义可参考:Spark Transformation。
笔记二
参考http://www.tuicool.com/articles/UJzmui
方法textFile读入一个文本文件,并在Spark环境里创建相应的RDD集。这个数据集存放在lines变量中。方法flatMap和map不同,map返回的是一个key,value的对,得到的RDD集和哈希表有点像。而flatMap的输出结果是数组。这个数组是对每个元素调用传入的lambda函数后得到的结果的并。这意味着传入的lambda函数可以返回0个或多个结果