怎么解析SPARK foreach循环中的变量问题
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,怎么解析SPARK foreach循环中的变量问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原因在spark算子中引用的外部变量
千家信息网最后更新 2025年01月28日怎么解析SPARK foreach循环中的变量问题
怎么解析SPARK foreach循环中的变量问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
原因
在spark算子中引用的外部变量,其实是变量的副本,在算子中对其值进行修改,只是改变副本的值,外部的变量还是没有变。
通俗易懂的讲就是foreach里的变量带不出来的,除非用map,将结果作为rdd返回
解决方案:
1、使用广播变量
object foreachtest { def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setMaster("local[1]") conf.setAppName("WcAppTask") val sc = new SparkContext(conf) sc.setLogLevel("WARN") val fileRdd = sc.parallelize(Array(("imsi1","2018-07-29 11:22:23","zd-A"),("imsi2","2018-07-29 11:22:24","zd-A"),("imsi3","2018-07-29 11:22:25","zd-A"))) val result = mutable.Map.empty[String,String] val resultBroadCast: Broadcast[mutable.Map[String, String]] =sc.broadcast(result) fileRdd.foreach(input=>{ val str = (input._1+"/t"+input._2+"/t"+input._3).toString resultBroadCast.value += (input._1.toString -> str) println(resultBroadCast.value.size) //返回1,2.3 }) println(result.size) //返回3}
2:使用累加器
val accum = sc.collectionAccumulator[mutable.Map[String, String]]("My Accumulator")fileRdd.foreach(input => { val str = input._1 + "/t" + input._2 + "/t" + input._3 accum.add(mutable.Map(input._1 -> str))})println(accum.value.size())
3:累加变量 longAccumulator
val longaa= sc.longAccumulator("count")fileRdd.foreach(input=>{ val str = (input._1+"/t"+input._2+"/t"+input._3).toString longaa.add(1L)})println(longaa.count) //返回3
关于怎么解析SPARK foreach循环中的变量问题问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
变量
问题
循环
副本
更多
算子
帮助
解答
易行
通俗
简单易行
内容
原因
只是
小伙
小伙伴
就是
方案
方法
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
佛山信息软件开发收费
java开源图片服务器
uds软件开发
网络技术考研难度
网页古剑奇侠服务器端外网
机关网络安全应急预案范文
广州 执道网络技术有限公司
北京软件开发推荐柚米科技
网络银行服务器异常怎么办
有关青少年网络安全法律法规
深圳net软件开发公司
东软软件开发口号
上海机械软件开发配件
服务器被攻击怎么恢复
苹果软件开发语言java
服务器上配置iis
mysql数据库录入中文乱码
深圳永邦移动互联网科技公司
软件开发方向怎么选
计算机网络技术全栈方向
jsp 数据库添加数据
cmm把软件开发组织的能力
学校文件服务器管理规范
初心神奇宝贝服务器下载
网吧服务器可以搬服吗
毕节服务器云存储费用
无线网络技术及其应用
服务器智能管理芯片
怎么出租饥荒服务器
ns方块方舟服务器搜不到