Spark学习笔记10-RDD(Resilient Distributed Datasets)

来源:互联网 发布:一梦似瑶台,心知玉女来 编辑:程序博客网 时间:2024/06/08 02:40

1.RDD概念

RDD(Resilient Distributed Datasets),弹性分布式数据集。是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD ,不同的分片、 数据之间的依赖 、key-value类型的map数据都可以看做RDD。(摘自百度百科)

2.Rdd创建的几种方法

(1)使用程序中的集合创建RDD(2)使用本地文件创建RDD(3)使用HDFS创建RDD(4)基于DB创建rdd(5)基于NoSQL,例如HBase(6)基于S3创建RDD(7)基于数据流创建RDD

3.用实例来说明前3种

3.1 集合创建RDD

用集合来创建RDD,主要是用于测试。本例子是在intelliJ中编写spark程序。关于intelliJ中创建spark工程的方法可以参考签名笔记eclipse创建spakr工程的方法,不再详细说明。
如下图所示,我在intelliJ中创建一个名为RDDBasedOnCollections的测试程序。使用val numbers = 1 to 100 来创建一个scala集合。再用sc.parallelize来创建RDD。再进行reduce。实现1加到100 。显示结果我哦5050。这样就做到来通过集合创建RDD
这里写图片描述

3.2 本地文件创建RDD

本地文件helloSpark.txt,内容如下图所示。
这里写图片描述

我在intelliJ中创建一个名为RDDBasedOnLocalFile的测试程序。我将/Users/xxm/Documents/soft/helloSpark.txt文件导入程序中,用来计算所有字符总数。如下图,我通过sc.textFile方法把本地文件创建为rdd。
这里写图片描述

3.3 HDFS创建RDD

HDFS创建RDD,就是把3.2中本地文件改为在HDFS分布式系统中的文件即可。这里不截图来说明了,只要把sc.textFile的参数给我HDFS文件即可,如改为sc.textFile(”hdfs:/Users/xxm/Documents/soft/helloSpark.txt”)
然后打包成jar包,发到spark集群上去运行,可以参考笔记8中在集群中运行WordCount程序方法。


XianMing

0 0
原创粉丝点击