Spark笔记:RDD基本操作(上)
原文链接:http://www.cnblogs.com/sharpxiajun/p/5506822.html
本文主要是讲解spark里RDD的基础操作。RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当作一个数组,这样的理解对我们学习RDD的API是非常有帮助的。本文所有示例代码都是使用scala语言编写的。
Spark里的计算都是操作RDD进行,那么学习RDD的第一个问题就是如何构建RDD,构建RDD从数据来源角度分为两类:第一类是从内存里直接读取数据,第二类就是从文件系统里读取,当然这里的文件系统种类很多常见的就是HDFS以及本地文件系统了。
第一类方式从内存里构造RDD,使用的方法:makeRDD和parallelize方法,如下代码所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/*
使用makeRDD创建RDD */
/*
List */
val rdd 01 = sc.makeRDD(List( 1 , 2 , 3 , 4 , 5 , 6 ))
val r 01 = rdd 01 .map
{ x = >
x * x }
println(r 01 .collect().mkString( "," ))
/*
Array */
val rdd 02 = sc.makeRDD(Array( 1 , 2 , 3 , 4 , 5 , 6 ))
val r 02 = rdd 02 .filter
{ x = >
x < 5 }
println(r 02 .collect().mkString( "," ))
val rdd 03 = sc.parallelize(List( 1 , 2 , 3 , 4 , 5 , 6 ), 1 )
val r 03 = rdd 03 .map
{ x = >
x + 1 }
println(r 03 .collect().mkString( "," ))
/*
Array */
val rdd 04 = sc.parallelize(List(
|