一、 RDD基本概念 RDD——分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错,位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度
二、运行spark-shell命令
执行spark-shell命令就可以进入Spark-Shell交互式环境
[root@hadoop1 spark-2.1.0-bin-hadoop2.4]# spark-shell
三、Spark Rdd简单操作
1.从文件系统加载数据创建RDD----textFile?
1)从Linux本地文件系统加载数据创建RDD
scala> val rdd = sc.textFile("file:///root/word.txt")
scala> rdd.collect()
2)从HDFS中加载数据创建RDD
[root@hadoop1 ~]# hadoop fs -mkdir -p /spark/test
[root@hadoop1 ~]# hadoop fs -put word.txt /spark/test
scala> val rdd = sc.textFile("/spark/test/word.txt")
scala> rdd.collect()
2.通过并行集合创建RDD----parallelize
scala> val array = Array(1,2,3,4,5)
array: Array[Int] = Array(1, 2, 3, 4, 5)
scala> val arrRdd = sc.parallelize(array)
arrRdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:26
scala> arrRdd.collect()
res0: Array[Int] = Array(1, 2, 3, 4, 5)
3.常用的Transformation
????????????????
命令 | 含义 | map() |
| filter() | 过滤,由()函数计算后返回值为true的元素组成 | flatMap() | 类似于map,但输入元素可以被映射,用于词频拆分 | union() | 相当于数学中集合的并集 | intersection() | 相当于数学中集合的交集 | distinct() | 去重操作后返回一个新的rdd | groupByKey() | 返回一个(l,iterator[数据类型]) 的rdd | reduceByKey() | 在一个(k,v)对的rdd上调用,返回一个新的(k,v)对rdd,用于词频统计 | sortByKey | 在一个(k,v)对的rdd上调用,第二个值为true时按从小到大排序,false为从大到小排序 | join() | 返回相同的key对应的所有元素,如(K,(V,W)) |
?
|