怎么解析SPARK foreach循环中的变量问题
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,怎么解析SPARK foreach循环中的变量问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原因在spark算子中引用的外部变量
千家信息网最后更新 2025年12月02日怎么解析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安全错误
数据库的锁怎样保障安全
最新网络安全整体形势
老城区软件开发定制
云服务器可以搭建多少个网站
软件测试是不是比软件开发累
数据库查询日志中报错的部分
南京联投网络技术
云服务器怎么连接
网络安全流量探针图标
联通软件开发岗待遇知乎
社科成果数据库
试分析网络技术的两面性
数据库连接地址怎么得到
中国操作风险数据库
数据库识图
文件管理连接服务器
移动网络dns服务器错误
sql数据库管理工具如何安装
绿色上网共建网络安全内容
3d打印的数据库
单一来源智慧校园软件开发
svn服务器网页
忘记服务器数据库密码怎么找回
数据库表单数据大于0
云易充服务器内部错误怎么回事
校园网络安全竞赛
海南电力守时模块服务器
专业技术人员网络安全题库
韩国国家网络安全攻略
松江区营销软件开发诚信合作
平度分销软件开发服务公司