412RDD操作 1.转换操作 .groupByKeyo group ByKey0应用于(K,V)键值对的数据集时,返回一个新的(K, tenable)形 式的数据集 >words= sc parallelize([ Hadoop",1), ( is",1), good",1), " Spark",1),("is",1),("ast",1).(" Spark",1),(s",1),(" better",1)]) >>>words 1= words. group ByKeyo > words 1. foreach(print) (Hadoop, <pyspark resultiterable Resultlterable object at Ox7fb210552c88>) (better, <pyspark resultiterable Resultlterable object at Ox7fb210552e80>) (fast, <pyspark resultiterable Resultlterable object at Ox7fb210552c88> (good, <pyspark resultiterable Resultlterable object at OX7fb210552c88>) Spark, <pyspark resultiterable Resultlterable object at 0x7fb210552f98>) Cis, <pyspark resultiterable Resultlterable object at OX7fb210552e 10> Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.2 RDD操作 •groupByKey() groupByKey()应用于(K,V)键值对的数据集时,返回一个新的(K, Iterable)形 式的数据集 1. 转换操作 >>> words = sc.parallelize([("Hadoop",1),("is",1),("good",1), \ ... ("Spark",1),("is",1),("fast",1),("Spark",1),("is",1),("better",1)]) >>> words1 = words.groupByKey() >>> words1.foreach(print) ('Hadoop', <pyspark.resultiterable.ResultIterable object at 0x7fb210552c88>) ('better', <pyspark.resultiterable.ResultIterable object at 0x7fb210552e80>) ('fast', <pyspark.resultiterable.ResultIterable object at 0x7fb210552c88>) ('good', <pyspark.resultiterable.ResultIterable object at 0x7fb210552c88>) ('Spark', <pyspark.resultiterable.ResultIterable object at 0x7fb210552f98>) ('is', <pyspark.resultiterable.ResultIterable object at 0x7fb210552e10>)
412RDD操作 1.转换操作 RDD(words) .groupByKeyo ("Hadoop"D) ("is",1) ("good", 1) ("Spark", 1) ("is",1) ("fast",1) ("Spark",D) ("is",1) ("better",1) words. group ByKeyo RDD(groupwords ("Hadoop",1) ("is";(1,1,1) (" Spark",(1,1) ("good",1) ("fast",1) (better",1) 图 groupBykeyo操作实例执行过程示意图 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.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()操作实例执行过程示意图 1. 转换操作
412RDD操作 1.转换操作 .reduce ByKey(func) reduce Byk<ey(func)应用于(K,V)键值对的数据集时,返回一个新的(K,v)形 式的数据集,其中的每个值是将每个key传递到函数func中进行聚合后得到 的结果 words= Sc parallelize([Hadoop",1),"is",1), ("good", 1), ("Spark", 1) .("s",1,("fast",1),(" Spark",1).("is",1),C" better",1)) > words1 words reduceByKey(lambda a, b: a+b) >>> words1 foreach(print) Good, 1) Hadoop, 1) Cbetter (Spark, 2) (fast, 1) (is,3) Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.2 RDD操作 •reduceByKey(func) reduceByKey(func)应用于(K,V)键值对的数据集时,返回一个新的(K, V)形 式的数据集,其中的每个值是将每个key传递到函数func中进行聚合后得到 的结果 1. 转换操作 >>> words = sc.parallelize([("Hadoop",1),("is",1),("good",1),("Spark",1), \ ... ("is",1),("fast",1),("Spark",1),("is",1),("better",1)]) >>> words1 = words.reduceByKey(lambda a,b:a+b) >>> words1.foreach(print) ('good', 1) ('Hadoop', 1) ('better', 1) ('Spark', 2) ('fast', 1) ('is', 3)
412RDD操作 1.转换操作 reduce ByKey(func RDD(words) ("Hadoop, 1) ("is"1) ("good",1) ("Spark", 1) ("is"1 ("fast",1) ("Spark",1) ("is"1) ("better",1) words. reduce By Key (lambda a, b: a+b) RDD(reducewords) ("Hadoop", 1) ("is"3) ("Spark", 2) ("good",1) ("better",1) 图 reduce ByKey0操作实例执行过程示意图 Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.2 RDD操作 •reduceByKey(func) 图 reduceByKey()操作实例执行过程示意图 1. 转换操作 ("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(lambda a,b:a+b)
412RDD操作 1.转换操作 .reduce ByKey(func) rdd reduce ByKey (lambda a, b: a+b) 原容器 reduceLeft f( 返回 结果 ≤" spark",<1,1,1>> Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn
《Spark编程基础》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 4.1.2 RDD操作 •reduceByKey(func) 1. 转换操作 rdd.reduceByKey(lambda a,b:a+b) <“spark”,<1,1,1>>