5.12RDD操作 1.转换操作 .groupByKeyo group ByKey0应用于(K,V)键值对的数据集时,返回一个新的(K, tenable)形 式的数据集 RDD(words) ("Hadoop", 1) ("is",1) ("good",1) ("Spark",1) ("is",1) ("fast",1) ("Spark", 1) ("is",1) ("better", 1) words. group ByKeyo RDD(groupwords) ("Hadoop, 1) ("is":(l,1,1) (" Spark"(1,1)) (good 1) (fast", 1) ("better", 1) 图 groupBykeyo操作实例执行过程示意图 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 •groupByKey() ("Hadoop",1) ("is",1) ("good",1) RDD(words) ("Spark",1) ("is",1) ("fast",1) ("Spark",1) ("is",1) ("better",1) ("Hadoop",1) ("is",(1,1,1)) RDD(groupwords) ("Spark",(1,1)) ("good",1) ("fast",1) ("better",1) words.groupByKey() groupByKey()应用于(K,V)键值对的数据集时,返回一个新的(K, Iterable)形 式的数据集 图 groupByKey()操作实例执行过程示意图 1. 转换操作
5.12RDD操作 1.转换操作 .reduce ByKey(func) reduce Byk<ey(func)应用于(K,∽)键值对的数据集时,返回一个新的(K,v)形 式的数据集,其中的每个值是将每个key传递到函数func中进行聚合后得到 的结果 RDD(words) ("Hadoop",1) ("is",1) ("good",1) ("Spark",1) ("is",1) ("fast", 1) ("Spark", 1) ("is",1) ("better", 1) words. reduceByKey((a, b=>a+b) RDD(reducewords) ("Hadoop", 1) ("is"3) ("Spark", 2) ("good",1) ("fast",1) better", 1) 图 reduce ByKey0操作实例执行过程示意图 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 •reduceByKey(func) reduceByKey(func)应用于(K,V)键值对的数据集时,返回一个新的(K, V)形 式的数据集,其中的每个值是将每个key传递到函数func中进行聚合后得到 的结果 ("Hadoop",1) ("is",1) ("good",1) RDD(words) ("Spark",1) ("is",1) ("fast",1) ("Spark",1) ("is",1) ("better",1) ("Hadoop",1) ("is",3) RDD(reducewords) ("Spark",2) ("good",1) ("fast",1) ("better",1) words.reduceByKey((a,b)=>a+b) 图 reduceByKey()操作实例执行过程示意图 1. 转换操作
5.12RDD操作 1.转换操作 .reduce ByKey(func) rdd reduce ByKey((a, b)=>a+b) 原容器 reduceLeft f( 返回 结果 ≤" spark",<1,1,1>> Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 •reduceByKey(func) 1. 转换操作 rdd.reduceByKey((a,b)=>a+b) <“spark”,<1,1,1>>
5.12RDD操作 2.行动操作 行动操作是真正触发计算的地方。Spak程序执行到行动操作 时,才会执行真正的计算,从文件中加载数据,完成一次又 次转换操作,最终,完成行动操作得到结果 表常用的RDD行动操作AP 操作 含义 count返回数据集中的元素个数 collect0以数组的形式返回数据集中的所有元素 first)返回数据集中的第一个元素 take(n)以数组的形式返回数据集中的前n个元素 reduce(func)通过函数fune(输入两个参数并返回一个值)聚合 数据集中的元素 foreach(func)将数据集中的每个元素传递到函数tunc中运行 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 行动操作是真正触发计算的地方。Spark程序执行到行动操作 时,才会执行真正的计算,从文件中加载数据,完成一次又一 次转换操作,最终,完成行动操作得到结果。 操作 含义 count() 返回数据集中的元素个数 collect() 以数组的形式返回数据集中的所有元素 first() 返回数据集中的第一个元素 take(n) 以数组的形式返回数据集中的前n个元素 reduce(func) 通过函数func(输入两个参数并返回一个值)聚合 数据集中的元素 foreach(func) 将数据集中的每个元素传递到函数func中运行 表 常用的RDD行动操作API 2. 行动操作
5.12RDD操作 scala> val rdd=sc parallelize(Array (1, 2, 3, 4, 5) rdd: org. apache. spark rdd RDD[Int]=ParallelCollectionRDD[1]at parallelize at <console>: 24 scala> rdd counto esO: Long=5 scala> rdd. first res1 Int scala> rdd take(3) res2: Array[Int]= Array(1, 2, 3) scala> rdd reduce((a, b)=>a+b) res 3: Int =15 scala> rdd collecto res4: Array[Int]= Array (1, 2, 3, 4, 5) scala> rdd foreach(elem=>println(elem)) 2345 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1.2 RDD操作 scala> val rdd=sc.parallelize(Array(1,2,3,4,5)) rdd: org.apache.spark.rdd.RDD[Int]=ParallelCollectionRDD[1] at parallelize at <console>:24 scala> rdd.count() res0: Long = 5 scala> rdd.first() res1: Int = 1 scala> rdd.take(3) res2: Array[Int] = Array(1,2,3) scala> rdd.reduce((a,b)=>a+b) res3: Int = 15 scala> rdd.collect() res4: Array[Int] = Array(1,2,3,4,5) scala> rdd.foreach(elem=>println(elem)) 1 2 3 4 5