spark快速大数据分析(3)

spark官方文档中的快速入门指南:http://spark.apache.org/docs/latest/quick-start.html

本书的github仓库:https://github.com/databricks/learning-spark

__________________________________________

RDD基础

  • spark核心概念、核心抽象
  • 弹性分布式数据集Resilient Distributed Database
  • 分布式的元素集合

spark中,所有操作不外乎创建RDD、转化已有RDD以及调用RDD操作进行求值。

每个RDD都被分为多个分区,这些分区运行在集群中的不同节点上。

RDD可以包含python、Java、Scala中的任意类型的对象,甚至可以包含用户自定义的对象。

RDD支持两种类型的操作:转换操作(transformation)和行动操作(action)。区别在于spark计算RDD的方式不同。spark会惰性计算RDD,只有第一次在一个行动操作中用到时,才会真正计算。

如果想在多个行动操作中重用同一个RDD,可以使用RDD.persist()让spark把这个RDD缓存下来,这样第一次对持久化的RDD计算后,spark会把RDD的内容保存在内存中(以分区方式存储到集群中的各机器上),在之后的行动操作中就可以重用这些数据。在任何时候都能进行重算是把RDD描述为“弹性”的原因。

每个spark程序或shell会话的工作方式

  1. 从外部数据创建出输入RDD
  2. 使用诸如filter()这样的转换操作对RDD进行转化,以定义新的RDD
  3. 告诉spark对需要被重用的中间结果RDD执行persist()操作
  4. 使用行动操作(例如first()/count())来触发一次并行计算,spark会对计算进行优化后再执行

--------------------------------------------------------

创建RDD

  1. 读取外部数据
  2. 在驱动器程序中对一个集合进行并行化(需要把整个数据集放在一台机器的内存中)

----------------------------------------------------------

RDD操作

  1. 转化操作(transformation)
  2. 行动操作(action)

转化操作返回的是新的RDD,行动操作返回的是其他的数据类型。

行动操作需要生成实际的输出,会把最终求得的结果返回到驱动器程序,或者写入外部存储系统中,会强制执行那些求值必须使用到的RDD的转化操作。


猜你喜欢

转载自blog.csdn.net/u014381464/article/details/80225247