当前位置:网站首页>spark过滤器
spark过滤器
2022-07-31 08:59:00 【JAVA百练成神】
//过滤你不需要的字段
rdd.filter(x=>{//过滤器
val arr =x.split(",")
val jg =arr(3)
if(jg.eq("")){//如果为空那就不要了
false
}else{
true
}
})
map进行分组
map(x=>{//按照同类型分组
val arr =x.split(",")
val tp =arr(2)
val jg =arr(3).toFloat
(tp,jg)
转hasmap,在rdd后面跟一个 }).collectAsMap()即可
}).groupByKey().map(x=>{
val tp =x._1 //group分组
var sum =0.0 //求和
for (y<- x._2){
sum+=y//累加同类型的价格
}
val age =sum/x._2.size//计算均值
(tp,age)
}).collectAsMap()//把元组转成hasmap,value就是map值
arr(3)=map.get(tp).toString//取出map中对应的值
arr.mkString(",")//把这个数组用字符串逗号链接然后返回
求商品平均值填空案例
1,AAA,饮料,3.5,武汉
2,BBB,饮料,2.5,武汉
3,CCC,烟酒,3.5,上海
11,OOO,烟酒,5.75,上海
4,DDD,饮料,12.5,上海
5,EEE,饮料,22.5,武汉
6,FFF,烟酒,7.5,上海
11,OOO,饮料,8.5,武汉
7,GGG,饮料,4.5,温州
8,HHH,烟酒,9.5,贵阳
9,JJJ,烟酒,2.5,南宁
10,KKK,饮料,5.5,南宁
package spark
import org.apache.spark.sql.SparkSession
object 均值填充 {
def main(args: Array[String]): Unit = {
val sparkSession =SparkSession.builder().master("local")
.appName("均值填充").getOrCreate()
val sc =sparkSession.sparkContext
val rdd =sc.textFile("src/product.txt")
//1.计算各个类别的均值
val map =rdd.filter(x=>{//过滤器
val arr =x.split(",")
val jg =arr(3)
if(jg.equals("")){//如果为空那就不要了
false
}else{
true
}
}).map(x=>{//按照同类型分组
val arr =x.split(",")
val tp =arr(2)
val jg =arr(3).toFloat
(tp,jg)
}).groupByKey().map(x=>{
val tp =x._1 //group分组
var sum =0.0 //求和
for (y<- x._2){
sum+=y//累加同类型的价格
}
val age =sum/x._2.size//计算均值
(tp,age)
}).collectAsMap()//把元组转成hasmap,value就是map值
//完成空值填充
rdd.map(x=>{
val arr=x.split(",")
val age =arr(3)
val tp =arr(2)//取出商品类型
if (age.equals("")){
arr(3)=map.get(tp).get.toString//取出map中对应的值
}
arr.mkString(",")//把这个数组用字符串逗号链接然后返回
}).saveAsTextFile("data/out1")
sparkSession.stop()
}
}
边栏推荐
- 【MySQL功法】第5话 · SQL单表查询
- SQL 嵌套 N 层太长太难写怎么办?
- 如何使用mysql binlog 恢复数据
- 蚂蚁核心科技产品亮相数字中国建设峰会 持续助力企业数字化转型
- 【MySQL功法】第4话 · 和kiko一起探索MySQL中的运算符
- 【pytorch记录】pytorch的分布式 torch.distributed.launch 命令在做什么呢
- SQL join table (inner join, left join, right join, cross join, full outer join)
- 关于挂载EXfat文件格式U盘失败的问题
- 期刊投递时的 Late News Submission 是什么
- 多版本node的安装与切换详细操作
猜你喜欢
Doraemon teach you forwarded and redirect page
Vulkan与OpenGL对比——Vulkan的全新渲染架构
【小程序项目开发-- 京东商城】uni-app之自定义搜索组件(中)-- 搜索建议
射频电路学习之滤波电路
傅里叶变换,拉普拉斯变换学习记录
Splunk Workflow action 给我们带来的好处
SSM framework explanation (the most detailed article in history)
(selenium)Service geckodriver unexpectedly exited. Status code was: 64
SSM integration case study (detailed)
[MySQL exercises] Chapter 4 · Explore operators in MySQL with kiko
随机推荐
Aleo Testnet3规划大纲
I advise those juniors and juniors who have just started working: If you want to enter a big factory, you must master these core skills!Complete Learning Route!
(selenium)Service geckodriver unexpectedly exited. Status code was: 64
JSP exception对象简介说明
功能强大的国产Api管理工具
sqli-labs(less-11)
傅里叶变换,拉普拉斯变换学习记录
怎样修改MySQL数据库的密码
手写promise
各位大佬,sqlserver 支持表名正则匹配吗
科目三:前方路口直行
利用frp服务器进行内网穿透ssh访问
【Excel】生成随机数字/字符
2022/7/30 考试总结
【云原生&微服务五】Ribbon负载均衡策略之随机ThreadLocalRandom
Feign介绍
MySQL中InnoDB的多版本并发控制(MVCC)的实现
Andoird开发--指南针(基于手机传感器)
模块化规范
Vulkan与OpenGL对比——Vulkan的全新渲染架构