spark重点总结

什么是RDD(Resilient Distributed Datasets)
1.RDD是将数据项拆分为多个分区的集合,存储在集群的工作节点上的内存和磁盘中,并执行正确的操作
RDD是用于数据转换的接口
2.RDD指向了存储在HDFS、Cassandra、HBase等、或缓存(内存、内存+磁盘、仅磁盘等),或在故障或缓存收回时重新计算其他RDD分区中的数据
3.分布式数据集
RDD是只读的、分区记录的集合,每个分区分布在集群的不同节点上
RDD并不存储真正的数据,只是对数据和操作的描述
4.弹性
RDD默认存放在内存中,当内存不足,Spark自动将RDD写入磁盘
5.容错性
根据数据血统,可以自动从节点失败中恢复分区

val rdd=sc.makeRDDArray(“hello”,“java”,“scala”)

1.map 和 flatMap
rdd.flatMap(x=>x.split(",")).collect
res24: Array[String] = Array(hello, java, hello)

rdd.map(x=>x.split(",")).collect
res25: Array[Array[String]] = Array(Array(hello), Array(java), Array(hello))

2.reduceByKey和groupByKey的区别
https://www.cnblogs.com/zzhangyuhang/p/9001523.html

3.宽窄依赖
数据迁移的宽依赖 反之则是窄依赖
map 窄
flatMap 窄
filter 窄
reduceByKey 宽
sortByKey 宽
distinct 宽
groupByKey 宽

4.现有客户信息文件customers.csv,请找出:
客户中的前5个最大家族
【客户中的前10个最流行的名字】
在这里插入图片描述

val conf=new SparkConf.setMaster("local[*]").setAppName("ABB")
val sc=SparkContext.getOrCreate(conf)
val rdd=sc.textFile("in/customers.csv")
rdd.map(x=>(x.split(",")(2),1))   //split之后每个Array取第三个位置的数据
.reduceByKey(_+_)  //
.map(x=>x.swap)
.sortByKey(false)
.map(x=>(x._1,x._2.replace("\"","")))
.take(5)

split之后是一行一个Array 如图 取想要的位置的数据
在这里插入图片描述
map(x=>(split(",") (2),1)) 效果
在这里插入图片描述

reduceByKey(_+_) 效果
在这里插入图片描述
map(x=>x.swap) 效果
在这里插入图片描述
sortByKey(false)
在这里插入图片描述
map(x=>(x._1,x._2.replcace(""","")) 效果
在这里插入图片描述
take(5) 效果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值