Spark RDD

RDD是什么

       就是一个集合, 在使用的时候,就当做为Scala集合类中List列表

实质

分布式 存储数据 集合

abstract class RDD[T: ClassTag]

              A Resilient(弹性) Distributed(分布式) Dataset (RDD)

Represents(代表) an immutable(不可变), partitioned(分区) collection of elements that can be operated(处理) on in parallel(并行)

         将数据划分为很多分区(partitioned),不同分区的数据存在在不同的机器里面,每个分区的数据可以被一个Task进程处理分析

This class contains the basic operations available on all RDDs, such as `map`, `filter`, and `persist`

所有的RDD都一些基本的操作,比如map,filter,persist

PairRDDFunctions contains operations available only on RDDs of key-value pairs, such as `groupByKey` and `join`;

RDD中的类型是键值对(二元组),RDD隐式转换PairRDDFunctions,PairRDDFunctions方法我们就可以用,比如有groupByKey,reduceByKey,join

 

* Internally, each RDD is characterized by five main properties:

 *  - A list of partitions 分区列表

 *  - A function for computing each split 每一个分片可以被一个函数处理(并行)

 *  - A list of dependencies on other RDDs

              一个RDD依赖于其他RDD(RDD怎么来)

                 查看依赖

                     println(wordCountRDD.toDebugString)

 *  - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)

       可选,如果RDD的值是二元组,你可以指定分区

 *  - Optionally, a list of preferred(最优) locations to compute each split on (e.g. block locations for an HDFS file)

       可选,最优的路径中读取分片数据

RDD创建方式

 

RDD创建方式

转换函数Tansformation

一个RDD调用函数之后 转换为另外一个RDD

              map,filter,reducBykey

action函数

一个RDD调用函数之后,不会转换为一个RDD,触发一个Job的执行

       比如

              count ->Long

              first -> 第一条数据

              take ->获取前几条数据

              top->获取前几条数据(排序)

              foreach ->打印所有的数据

              saveAsTextFile ->保存数据到文件

持久化persisitent

def persist(newLevel: StorageLevel)

def unpersist(blocking: Boolean = true)   

class StorageLevel private(

        private var _useDisk: Boolean,  //磁盘

        private var _useMemory: Boolean, //内存

        private var _useOffHeap: Boolean, //JVM内存中tachyon(基于内存的分布式文件系统)

        private var _deserialized: Boolean, 反序列化

        private var _replication: Int = 1)  //副本个数

      extends Externalizable

什么情况下,RDD数据需要进行持久化呢???

       (1)某个RDD数据,被多次使用

                 重复RDD

       (2)某个RDD数据来自不易,使用超过1次

                 经过复杂的处理得到RDD

       (3)通常选择的策略

                 MEMORY_ONLY_2   -如果内存足够

                 MEMORY_AND_DISK_SER_2 -如果内存不够,先内存后磁盘,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值