Spark RDD

原创 2017年11月15日 12:23:12

RDD是Spark的核心抽象,全称为ResilientDistributedDataSet,弹性分布式数据集
RDD在抽象上来说是一种元素集合的,包含了数据。它是被分区的,分为多个分区的,每个分区分布在集群中的不同节点上,分区即是Partition的,从而让RDD中的数据可以被并行操作的
RDD通常通过Hadoop上的文件,即是HDFS文件来进行创建的,有时也可以通过spark应用程序中的集合来创建的
RDD最重要的特性是提供了容错性的,可以自动从节点失败中恢复过来的额,即如果某个节点上的RDD Partition,因为节点故障,导致数据丢失了,那么RDD会自动通过自己的数据来源重新计算Paritition的,这一切对使用者来说是透明的
RDD的数据默认情况下是存放在内存中的,但是在内存资源不足的时候,Spark会自动将RDD数据写入磁盘中的额,弹性的特性的

创建RDD的三种方式:
在RDD中,通常就代表了和包含了Spark应用程序的输入源数据
当我们,在创建了初始化的RDD之后,才可以通过SparkCore提供的Transformation算子,对该RDD进行transformation转换操作的来获取其他的RDD的
SparkCore为我们提供了三种创建RDD的方式:
使用程序中的集合创建RDD,主要是用于进行测试的,可以在实际部署到集群运行之前,自己使用集合构造测试数据来测试后面的Spark应用的流程的
使用本地文件创建RDD,主要用于在本地临时性地处理一些存储大量数据的文件
使用HDFS文件创建RDD,应该是最常用的生产环境处理方式,主要可以针对HDFS上存储的大数据,进行离线批次处理操作的

并行化创建RDD
如果要通过并行化集合来创建RDD,需要针对程序中的集合,调用SparkContext中的Parallelize方法的,Spark会将集合中的数据拷贝到集群上去的,形成一个分布式的数据集合的,也就是一个RDD,集合中的部分数据到一个节点上的额,另一部分数据会到其他节点的,然后可以采用并行的方式来操作这个分布式数据集合的
val arr=Array(1,2,3,4,5)
val rdd=sc.parallelize(arr)
val sum=rdd.reduce(+)
Typically you want 2-4partitions for each CPU in your cluster,
在调用parallelize()方法时候,有一个重要的参数可以指定的,就是要将集合切分成多少个partition的,Spark会为每一个partition运行一个task来进行处理的,Spark的官方建议是为集群中的每个CPU创建2-4个partition,Spark默认会根据集群的情况来设置partition的数量的,但是也可以调用parallelize方法时候传入第二个参数的, 来设置RDD的partition数量的,

使用TextFile方法,通过本地文件或者HDFS创建RDD
Spark是支持使用任何Hadoop支持的存储系统上的文件创建RDD的,比如说是HDFS,Cassandra,HBase以及本地文件的,通过调用SparkContext的TextFile()方法,可以针对本地文件或 HDFS文件创建RDD,通过调用SparkContext的textFile方法,可以针对本地文件或者是HDFS上的文件创建RDD的,
val rdd=sc.textFile(“/home/hadoop/data.txt”)
val wordcount=rdd.map(line=>line.length).reduce(+)

如果是在Spark集群上针对Linux本地文件,那么需要将文件拷贝到所有的worker节点上的,就是spak-submit上使用–master指定了master节点的,使用standalone模式进行运行的,而TextFile方法内仍然使用的是Linux本地文件的,在这种情况下,是需要将文件拷贝到所有的worker节点上的,

Spark的textFile方法支持针对目录,压缩文件以及通配符进行创建RDD的,
Spark会默认为HDFS文件上的每一个block创建一个partition的,但是也可以通过textFile的第二参数来手动的设置分区数量的,只能比HDFS上的block数量多的额,不能比block数量少的额,

相关文章推荐

Spark1.4.1 RDD算子详解

  • 2017年03月02日 09:24
  • 4.64MB
  • 下载

spark RDD 论文

  • 2016年09月09日 11:55
  • 1.02MB
  • 下载

Spark核心编程:创建RDD(集合、本地文件、HDFS文件)

Spark核心编程:创建RDD(集合、本地文件、HDFS文件)

Spark学习--RDD编码

  • 2017年05月09日 14:07
  • 10KB
  • 下载

Learning Spark - 第三章 RDD编程

  • 2015年09月27日 22:01
  • 608KB
  • 下载

Spark技术内幕:究竟什么是RDD

RDD是Spark最基本,也是最根本的数据抽象。http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf 是关于RDD的论文。如果觉得英...

spark API RDD

  • 2014年09月05日 16:18
  • 332KB
  • 下载

Spark rdd讲解

  • 2017年06月09日 16:21
  • 704KB
  • 下载

Spark RDD基本操作

Spark RDD Scala语言编程RDD(Resilient Distributed Dataset)是一个不可变的分布式对象集合, 每个rdd被分为多个分区, 这些分区运行在集群的不同节点上。r...

spark rdd 操作详解

  • 2015年04月22日 15:11
  • 527KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark RDD
举报原因:
原因补充:

(最多只允许输入30个字)