《 Sparks编程基础( Scala版)》 教材官网:hp/ /dblab xmu. edu. cn/post/spark 湿馨提示:编幻灯片母版,可以修改每页PPT的厦大校傲和底部文字 第5章RDD编程 可回 (PPT版本号:2018年7月版本 林子雨 厦门大学计算机科学系 E-mail:ziyulin@xmu.edu.cnA 扫一扫访问教材官网 主页http://www.cs.xmu.edu.cn/linziyu 厦门大学计算机科学系 2018版
《Spark编程基础厦门大学计算机科学系 》 厦门大学计算机科学系 林子雨 2018 ziyulin@xmu.edu.cn 版 林子雨 厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 主页:http://www.cs.xmu.edu.cn/linziyu 第5章 RDD编程 (PPT版本号: 2018年7月版本) 温馨提示:编辑幻灯片母版,可以修改每页PPT的厦大校徽和底部文字 《Spark编程基础(Scala版)》 教材官网: http://dblab.xmu.edu.cn/post/spark/ 扫一扫访问教材官网
提纲 51RDD编程基础 52键值对RDD 53数据读写 54综合案例 编程基础 G DAS 高校大数据课程 公共服务平台 百度搜索厦门大学数据库实验室网站访问平台 Spark编程基础》 厦门大学计算机科学系 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 提纲 5.1 RDD编程基础 5.2 键值对RDD 5.3 数据读写 5.4 综合案例 百度搜索厦门大学数据库实验室网站访问平台
51RDD编程基础 5.1.1RDD创建 51.2RDD操作 5.1.3持久化 5.14分区 51.5一个综合实例 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1 RDD编程基础 5.1.1 RDD创建 5.1.2 RDD操作 5.1.3 持久化 5.1.4 分区 5.1.5 一个综合实例
5.1.1RDD创建 1.从文件系统中加载数据创建RDD 2.通过并行集合(数组)创建RDD Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.1 RDD创建 1. 从文件系统中加载数据创建RDD 2. 通过并行集合(数组)创建RDD
5.1.1RDD创建 1.从文件系统中加载数据创建RDD spark采用 d textFile()方法来从文件系统中加载数据创建RDD 该方法把文件的UR作为参数,这个URI可以是: 本地文件系统的地址 或者是分布式文件系统HDFS的地址 或者是 Amazon s3的地址等等 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.1 RDD创建 •Spark采用textFile()方法来从文件系统中加载数据创建RDD •该方法把文件的URI作为参数,这个URI可以是: •本地文件系统的地址 •或者是分布式文件系统HDFS的地址 •或者是Amazon S3的地址等等 1. 从文件系统中加载数据创建RDD
5.1.1RDD创建 (1)从本地文件系统中加载数据创建RDD scala> val lines= sc textFile ("file: usr/local/spark/mycode/rdd/word. txt") lines: org. apache. spark rdd RDD[String] file / usr/local/spark/mycode/rdd/word. txt MapPartitionsRDD[12] at textFile at : 27 word. txt RDD(lines) Hadoop is good "Hadoop is good" Spark is fast sc textFile Spark is fast park is better Spark is better" 表示一个RDD元素 图从文件中加载数据生成RDD Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.1 RDD创建 scala> val lines = sc.textFile("file:///usr/local/spark/mycode/rdd/word.txt") lines: org.apache.spark.rdd.RDD[String] = file:///usr/local/spark/mycode/rdd/word.txt MapPartitionsRDD[12] at textFile at :27 word.txt RDD(lines) sc.textFile() Hadoop is good Spark is fast Spark is better "Hadoop is good" "Spark is fast" "Spark is better" 表示一个RDD元素 图 从文件中加载数据生成RDD (1)从本地文件系统中加载数据创建RDD
5.1.1RDD创建 (2)从分布式文件系统HDFS中加载数据 scala> val lines= sc textFile(hdfs: //localhost: 9000/user/hadoop/word. txt) scala> val lines sc textFile(/user/hadoop/word. txt scala> val lines=sc textFile(word. txt) 三条语句是完全等价的,可以使用其中任意一种方式 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.1 RDD创建 scala> val lines = sc.textFile("hdfs://localhost:9000/user/hadoop/word.txt") scala> val lines = sc.textFile("/user/hadoop/word.txt") scala> val lines = sc.textFile("word.txt") (2)从分布式文件系统HDFS中加载数据 三条语句是完全等价的,可以使用其中任意一种方式
5.1.1RDD创建 2.通过并行集合(数组)创建RDD 可以调用 SparkContex的 parallelize方法,在 Driver中一个已经存在的集合 (数组)上创建 array RDD(rdd) scala>val array Array (1, 2, 3, 4, 5) array: Array[Int]= Array (1, 2, 3, 4, 5) scala>val rdd=sc parallelize array rdd: org. apache. spark rdd RDD[Int] Am(12345)sly/3 ParallelCollection RDD[13] at parallelize at : 29 或者,也可以从列表中创建: 图从数组创建RDD示意图 scala>val list= List(1, 2, 3, 4, 5) list: List[Int]=List(1, 2, 3, 4, 5) scala>val rdd sc parallelize list) rdd: org. apache. spark rdd RDD[Int]=ParallelCollectionRDD[14] at parallelize at : 29 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.1 RDD创建 可以调用SparkContext的parallelize方法,在Driver中一个已经存在的集合 (数组)上创建。 scala>val array = Array(1,2,3,4,5) array: Array[Int] = Array(1, 2, 3, 4, 5) scala>val rdd = sc.parallelize(array) rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[13] at parallelize at :29 或者,也可以从列表中创建: scala>val list = List(1,2,3,4,5) list: List[Int] = List(1, 2, 3, 4, 5) scala>val rdd = sc.parallelize(list) rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[14] at parallelize at :29 array RDD(rdd) Array(1,2,3,4,5) 1 2 3 sc.parallelize(array) 4 5 图 从数组创建RDD示意图 2. 通过并行集合(数组)创建RDD
5.12RDD操作 1转换操作 2行动操作 3.惰性机制 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 1. 转换操作 2. 行动操作 3. 惰性机制
5.12RDD操作 1.转换操作 °对于RDD而言,每一次转换操作都会产生不同的RDD,供 给下一个“转换”使用 转换得到的RDD是惰性求值的,也就是说,整个转换过程 只是记录了转换的轨迹,并不会发生真正的计算,只有遇到 行动操作时,才会发生真正的计算,开始从血缘关系源头开 始,进行物理的转换操作 转换 创建 A B 转换 转换 动作 Input E Output 转换 创建C 转换 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 •对于RDD而言,每一次转换操作都会产生不同的RDD,供 给下一个“转换”使用 •转换得到的RDD是惰性求值的,也就是说,整个转换过程 只是记录了转换的轨迹,并不会发生真正的计算,只有遇到 行动操作时,才会发生真正的计算,开始从血缘关系源头开 始,进行物理的转换操作 Input A B C D E F Output 动作 转换 转换 转换 转换 转换 创建 创建 1. 转换操作