大数据全系列 教程
1869个小节阅读:466.6k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
根据rdd中元素(通常也是元祖)的指定内容进行分组,分组后的元素都是二元组。
xxxxxxxxxx
package com.itbaizhan.rdd
//1.导入类
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object RddGroupBy {
def main(args: Array[String]): Unit = {
//2.构建SparkConf对象,并设置本地运行和程序名称
val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("groupBy")
//3.使用conf对象构建SparkContet对象
val sc = new SparkContext(conf)
//5.创建Rdd
val rdd: RDD[(Char, Int)] = sc.parallelize(Array(('a', 1), ('a', 2), ('b', 1), ('b', 2), ('a', 3), ('a', 4)))
//6.通过groupBy算子对rdd对象中的数据进行分组
//groupBy插入的函数的用意是指定按照谁进行分组
//分组后的结果是有二元组组成的RDD
val gbRdd: RDD[(Char, Iterable[(Char, Int)])] = rdd.groupBy(tupEle => tupEle._1)
//收集到Driver端
val result1: Array[(Char, Iterable[(Char, Int)])] = gbRdd.collect()
//(a,CompactBuffer((a,1), (a,2), (a,3), (a,4))),(b,CompactBuffer((b,1), (b,2)))
println(result1.mkString(","))
//7.使用map转换算子
//(a,List((a,1), (a,2), (a,3), (a,4))),(b,List((b,1), (b,2)))
val result2: Array[(Char, List[(Char, Int)])] = gbRdd.map(tup => (tup._1, tup._2.toList)).collect()
println(result2.mkString(","))
//4.关闭sc对象
sc.stop()
}
}
实时效果反馈
1. 以下关于rdd.groupBy(tupEle => tupEle._1)
的描述错误的是:
A groupBy传入的函数的意思是: 通过这个函数,确定按照谁来分组。
B groupBy方法适用于元素为元祖类型的RDD,元祖元素的个数只能为2。
C groupBy方法适用于元素为元祖类型的RDD,元祖元素的个数>=2。
答案:
1=>B