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 <console>: 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 <console>: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 <console>: 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 <console>: 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 <console>: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 <console>: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. 转换操作