第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
- 从外部使用parallelize,注意后面加数字是改变partitions的数量,reduce和collect的动作操作会执行计算
- 从文件中创建
注意如果是本地文件系统,需要注意以下问题:
支持文件夹下所有文件,多个正则文件,gz压缩文件
可以控制partition的数量,默认partition是hdfs中的一个block,128M
使用wholeTextFiles读取文件位置和文件内容
保存和加载Sequence File
从ES中读取数据
数据存储
Spark应用程序的开发以及运行
设置参数操作:
添加使用的python的路径
添加使用的spark路径(就是把前面路径中的/python去掉)
然后apply
两个zip包。
打开preference
添加完成,最后示范一段简单的开发代码
在集群上提交代码
spark-submit --help可以看到官方的一些指示