码迷,mamicode.com
首页 > 其他好文 > 详细

Spark RDD

时间:2020-07-05 15:15:06      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:home   park   cti   一个   分布式   ado   image   reduce   for   

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

标签:home   park   cti   一个   分布式   ado   image   reduce   for   

原文地址:https://www.cnblogs.com/alen-apple/p/13245890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!