大数据全系列 教程
1869个小节阅读:467.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
map算子功能:是将RDD的数据一条条处理,处理的逻辑基于map算子中接收的处理函数,然后返回新的RDD 。
xxxxxxxxxx
补充语法∶算子的参数时一个函数
//func=>f: T => U
// f∶ 表示这是一个函数或方法
//(T)=> U表示的是方法的定义,参数列表和返回值类型∶
//(T)表示 传入1个参数,()表示没有传入参数
// T 是泛型的代称,在这里表示任意类型
// U 也是泛型代称,在这里表示任意类型
//(T)=> U 总结起来的意思是∶这是一个方法,这个方法接受一个参数传入,传入参数类型不限.返回一个返回值,返回值类型也不限.
//(T)=> T 总结起来的意思是∶这是一个方法,这个方法接受一个参数传入,传入参数类型不限,一个返回值,返回值和传入参数类型一致。
def map[U: ClassTag](f: T => U): RDD[U]
代码演示:
xxxxxxxxxx
package com.itbaizhan.rdd
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object TransformationMap {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("map")
val sc = new SparkContext(conf)
//1.创建rdd对象
val rdd: RDD[Int] = sc.parallelize(List(1, 2, 3, 4))
//val rdd: RDD[Int] = sc.parallelize(Array(1, 2, 3, 4))
//2.定义函数,作为map算子的传入函数
def funcA(x:Int):Int={
if((x%2!=0)){
return x*2
}else{
return x
}
}
//3.map中使用funcA
val rdd1: RDD[Int] = rdd.map(funcA)
println(rdd1.collect().mkString(","))
//4.匿名函数的用法
def funcB(x:Int): Int ={
return x*2
}
val rdd3: RDD[Int] = rdd.map(funcB)
println(rdd3.collect().mkString(","))
println(rdd.map(x=>x*2).collect().mkString(","))
println(rdd.map(_*2).collect().mkString(","))
//关闭sc
sc.stop()
}
}
运行结果:
xxxxxxxxxx
2,2,6,4
2,4,6,8
2,4,6,8
2,4,6,8
实时效果反馈
1. 以下关于RDD算子函数参数f:T=>U
的描述正确的是:
A f∶ 表示这是一个函数或方法。
B T表示 传入1个参数,类型不限。
C T=>U总结起来的意思是∶这是一个方法,这个方法接受一个参数传入,传入参数类型不限.返回一个返回值,返回值类型也不限。
D 以上三个选项都正确。
答案:
1=>D