第3章 Spark Core核心RDD

大部分截图来自于官网:http://spark.apache.org/docs/latest/rdd-programming-guide.html


RDD源码:源码git地址

RDD五大特性:

1. A list of partitions
RDD是一个由多个partition(某个节点里的某一片连续的数据)组成的的list;将数据加载为RDD时,一般会遵循数据的本地性(一般一个hdfs里的block会加载为一个partition)。
2. A function for computing each split
RDD的每个partition上面都会有function,也就是函数应用,其作用是实现RDD之间partition的转换。
3. A list of dependencies on other RDDs
RDD会记录它的依赖 ,为了容错(重算,cache,checkpoint),也就是说在内存中的RDD操作时出错或丢失会进行重算。
4. Optionally,a Partitioner for Key-value RDDs
可选项,如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,例如这里自定义的Partitioner是基于key进行分区,那则会将不同RDD里面的相同key的数据放到同一个partition里面
5. Optionally, a list of preferred locations to compute each split on
最优的位置去计算,也就是数据的本地性。移动数据不如移动计算。

RDD五大特性源码体现

图解RDD

SparkContext&SparkConf详解

创建RDD

  1. 从外部使用parallelize,注意后面加数字是改变partitions的数量,reduce和collect的动作操作会执行计算

  2. 从文件中创建

    注意如果是本地文件系统,需要注意以下问题:

    支持文件夹下所有文件,多个正则文件,gz压缩文件
    可以控制partition的数量,默认partition是hdfs中的一个block,128M

    使用wholeTextFiles读取文件位置和文件内容


    保存和加载Sequence File

    从ES中读取数据

    数据存储

Spark应用程序的开发以及运行


设置参数操作:


添加使用的python的路径

添加使用的spark路径(就是把前面路径中的/python去掉)

然后apply
两个zip包。
打开preference


添加完成,最后示范一段简单的开发代码

在集群上提交代码

spark-submit --help可以看到官方的一些指示