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的数据类型及结构,

scala语言中的case关键字在spark中的一个奇特使用的更多相关文章
- C语言中的volatile关键字简介
C语言中的volatile关键字简介: (1)含义: volatile关键字的意思是可能会被外来的意想不到的改变.它的作用是:优化器在使用该关键字定义的变量时,直接从内存中读取原始的数 ...
- Scala 深入浅出实战经典 第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第47讲:Scala多重界定代码实战及其在Spark中的应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- C语言中float,double类型,在内存中的结构(存储方式)
C语言中float,double类型,在内存中的结构(存储方式)从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以doubl ...
- C语言中的static关键字
C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果有重复定义的话编译器就会报错.伴随着不同源文件变量和函数之间的相互 ...
- C语言中的extern关键字用法
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”. 1. extern修饰变量的声明.举例来说,如果文件a.c需要引用b.c中变量int v ...
- C语言中printf与i++,C++中的cout
一,printf与i++ 1,C语言中的printf是自右向左输出,. 2,而i++与++i不同的 i++首先取得i的值,下一行时候i = i + 1: ++i,首先i = i + 1,再取得i的值. ...
- C语言中的far关键字
最近看嵌入式文件系统TFFS的源码,看到far关键字,基础不好,惊呆了... /*Specify here which pointers may be far, if any. *Far pointe ...
- C语言中switch case语句可变参实现方法(case 参数 空格...空格 参数 :)
正常情况下,switch case语句是这么写的: : : ... ;break ; default : ... ;break ; } 接下来说一种不常见的,但是对于多参数有很大的帮助的写法: 先给一 ...
随机推荐
- 协程.md
一. # 可迭代l = [ i for i in range(10) ] # l是可迭代的,但不是迭代器for idx in l: print(idx) # range是个迭代器for i ...
- 004-restful应用构建、分布式会话、测试工具简介
一.概述 什么是rest(表述性状态转移,Representational State Transfer)是一种架构风格.他定义了创建可扩展Web服务的最佳实践. 1.Richardson成熟度模型 ...
- node 学习系列-hello world
准备学习node,记录一段 1.搭建好 node 以后,就记录一下 hello world
- 小程序 login
app.json : 配置文件 => 文件路径 pages .配置窗口 window.底部导航 tabBar .请求超时时间 networkTimeout app.js : 请求路口文件 wx. ...
- maven 转myeclipse eclipse 项目 命令
我们在网上下载的开源Maven工程想要转换成Eclipse能够识别的工程,需要执行如下命令: Jar工程: mvn eclipse:eclipse 或 mvn eclipse:myeclipse We ...
- python用%来处理字符串
%s 可以字符串拼接 msg='i am %s my hobby is %s' % ('lhf','alex') print(msg) 执行结果: i am lhf my hobby is alex ...
- 安装 pymongo
- iOS 新浪微博-4.0 OAuth授权
申请开发者 想要拉到到新浪微博的数据,首先让自己成为开发者.申请成为开发者账号很简单,只要有新浪微博的账号即可. 申请地址:http://open.weibo.com/ 在开发的过程中,我们需要拿到几 ...
- iOS UI进阶-2.0 CALayer
在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图 ...
- RSA 加解密 秘钥对说明
rsa非对称加密, 加解密需要不同的秘钥,称作一对. rsa加解密分两种,第一:公钥加密私钥解密.第二:私钥加密公钥解密. 需要注意的是,公加私解得到的密文是变化的,而私加公解的得到的密文是固定的. ...