一、编写spark程序的准备工作(程序入口 SparkContext)
1.创建SparkConf
val conf = new SparkConf().setMaster("local[2]").setAppName("hello-app")
2.创建sparkContext
val sc: SparkContext = new SparkContext(conf)
二、基于sparkContext创建RDD
简略的说, RDD 有三种创建方式
- RDD 可以通过本地集合直接创建
- RDD 也可以通过读取外部数据集来创建
- RDD 也可以通过其它的 RDD 衍生而来
通过本地集合直接创建 RDD
val list = List(1, 2, 3, 4, 5, 6)
val rddParallelize = sc.parallelize(list, 2)
val rddMake = sc.makeRDD(list, 2)
通过读取外部文件创建 RDD
val source1: RDD[String] = sc.textFile("hdfs://node01:8020/dataset/wordcount.txt")
val source2: RDD[String] = sc.textFile("/data/input/wordcount.txt")
通过其它的 RDD 衍生新的 RDD
val source: RDD[String] = sc.textFile("hdfs://node01:8020/dataset/wordcount.txt", 20)
val words = source.flatMap { line => line.split(" ") }
三、RDD算子的使用
RDD 中的算子从功能上分为两大类(Transformation和Action)
- Transformation(转换) 它会在一个已经存在的 RDD 上创建一个新的 RDD, 将旧的 RDD 的数据转换为另外一种形式后放入新的 RDD。
- Action(动作) 执行各个分区的计算任务, 将的到的结果返回到 Driver 中。