scala语言中的case关键字在spark中的一个奇特使用
package com.spark.demo import com.spark.demo.util.SparkUtil import org.apache.spark.rdd.RDD import scala.collection.mutable /** * @created by imp ON 2019/2/14 */ case class Person1(name:String,age:Int) object CaseDemo { def main(args: Array[String]): Unit = { val appName = this.getClass.getName val isLocal = true val conf = SparkUtil.generateSparkConf(appName, isLocal, that => { // 这里可以单独的指定当前spark应用的相关参数 // nothings that.set("", "") }) // 2.3 SparkContext对象的构建 val sc = SparkUtil.getSparkContext(conf) //可单独写方法判断 读取hdfs的某一天文件夹下所以文件 val path = "data/person" val data: RDD[Any] = sc.textFile(path).map { //case替代map(line=>)的写法 不在使用._1 ._2 上一个父rdd的类型值可直接命名为变量使用 case (line) => { val arr = line.split(" ") (arr(0), arr(1)) } } .map(info => { Person1(info._1, info._2.toInt) }) .map { //case(p)相当于 map(p=>{}) case (person) => { (person, (person.name, person.age)) } }.map { case (person, (name, age)) => { val map = mutable.HashMap[String, Int]() map.+=(name -> age) } } data.foreach(println(_)) } }
结果如下
data.map(i=>{ })与
data.map{ case(上一个父rdd的类型值可直接命名为变量使用)=>{
//case() } }是一样的道理 第二个代码看起来明了,可直接知道父rdd的数据类型及结构,
分类:
大数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律