RDD基础知识
Posted yixl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDD基础知识相关的知识,希望对你有一定的参考价值。
RDD(弹性分布式数据集)作为spark的核心概念,RDD其实就是一个不可变的分布式的元素集合
什么是弹性: 在任何实收都能进行重新计算,当保存RDD数据的一台机器挂了,spark还可以使用这种特性来重新计算出丢掉的分区,对用户也完全透明。
每个RDD都被分为多个分区,这些分区运行在集群中的不同节点
创建RDD的方式有多种,一是主要读取一个外部的数据集,二是在驱动器程序中的对象集合。
创建出RDD之后,支持两种类型的操作: transformation和action操作。转化操作由一个RDD生产一个新的RDD,但只会惰性计算这些RDD,action操作才是真正计算最终结果的。
spark的RDD会在每次对他们进行action操作时重新计算,如果想在多个action操作中重用同一个RDD,可以使用cache()或是RDD.persist()来将这个RDD缓存起来。我们也可以将数据缓存到不同的地方,比如,磁盘或是内存。如果所有操作都结束,则可以调用stop()操作结束。
eg 举例如下:
1 >>> val rdd = sc.parallelize(Seq(("hadoop",3), ("spark",2), ("hive",1), ("hbase",3), ("java",2))) 2 >>> val resRdd= rdd.filter(_._2 == 3) 3 >>> resRdd.persist() 4 >>> resRdd.count() 5 >>> resRdd.first()
大概的spark程序工作方式:
- 从外部数据集或驱动程序中创建出RDD.
- 使用filter(),flatMap()等transformation操作对RDD进行转化,定义新的RDD.
- 将重用的中间结果RDD进行cache()或是persist()操作(cache()和使用默认级别的persist()操作是相同意思的)。
- 使用action操作来触发一次并行计算。
http://spark.apachecn.org/docs/cn/2.2.0/sql-programming-guide.html
spark中文官网(学习spark最好的方式就是读官方文档)
以上是关于RDD基础知识的主要内容,如果未能解决你的问题,请参考以下文章