Spark RDD

Posted alen-apple

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark RDD相关的知识,希望对你有一定的参考价值。

RDD概述

RDD:弹性分布式数据集,初学时,可以把RDD看做是一种集合类型(和Array,List类比)

RDD的特点:

有容错性,即数据丢失是可以恢复的

有分区机制,可以并行的处理RDD数据

 

创建RDD的2种方式:

①将一个普通的集合类型(Array或List)

②通过Spark读取外部存储文件,将文件数据转变为RDD。可以从本地磁盘读取,也可以从HDFS读取

 

RDD的分区机制目的:可以分布式的计算RDD的数据集,底层可以确保分区数据的负载均衡状态

技术图片

 

 

 

技术图片

 

 

 

Spark单机模式启动

bin目录下执行:sh spark-shell --master=local 

1.sc是SparkContext的别名对象,用于操作spark的入口对象,通过sc可以创建RDD,广播变量,此外sc用于负载job任务的分配和监控

2.创建RDD的方法:

①sc.parallelize(普通集合,分区数量)

②sc.makeRDD(普通集合,分区数量)

3.关于RDD分区的相关方法

①rdd.partitions.size 查看分区数量

②rdd.glom.collect 查看分区数据

4.创建RDD的两种途径:

①将一个普通集合转变为RDD

②读取外部文件,转变为RDD :

 

 

方法: sc.textFile(路径,分区数)

补充:file:// 本地文件协议 => sc.textFile("file:///home/words.txt",2)

   hdfs://HDFS文件系统协议 => sc.textFile("hdfs://hadoop101:9000/words.txt",2)

 

RDD的操作函数

两类操作:

1.Transformation 变换操作:都是懒方法,即调用之后并没有马上执行

1.Action 执行操作:触发执行

 

案例:通过rdd实现统计文件中的单词数量,并输出到文件系统
本地:sc.textFile("/root/work/words.txt").flatMap(_.split("")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/root/work/wcresult")

hdfs:
val rdd = sc.textFile("hdfs://hadoop101:9000/words.txt",2)
val result = rdd.flatMap(_.split("")).map((_,1)).reduceByKey(_+_)
result.saveAsTextFile("hdfs://hadoop101:9000/wordresult")

技术图片

 

以上是关于Spark RDD的主要内容,如果未能解决你的问题,请参考以下文章

将列添加到 RDD Spark 1.2.1

RDD, DataFrame,DataSet区别与相互转化

05 RDD

05 RDD

2RDD编程

科普Spark,Spark是什么,如何使用Spark