LinkedHashMap 变量在 foreach 循环之外不可访问

2024-04-03

这是我的代码。

var link = scala.collection.mutable.LinkedHashMap[String, String]()
var fieldTypeMapRDD = fixedRDD.mapPartitionsWithIndex((idx, itr) => itr.map(s => (s(8), s(9))))

fieldTypeMapRDD.foreach { i =>
  println(i)
  link.put(i._1, i._2)

}
println(link.size)// here size is zero

我想访问侧循环外的链接。请帮忙。


为什么你的代码不应该工作:

  1. 在你之前foreach任务开始,整个函数的闭包都在里面foreach块被序列化并首先发送到master,然后发送到每个worker。这意味着他们每个人都会有自己的实例mutable.LinkedHashMap作为副本link.
  2. During foreach块每个工人都会将其每个项目放入其自己的项目中link copy
  3. 任务完成后,你的本地空间仍然是空的link每个工作节点上有几个非空的前副本。

寓意很明确:不要将本地可变集合与 RDD 一起使用。这是行不通的。

将整个集合获取到本地计算机的一种方法是collect方法。 您可以将其用作:

val link = fieldTypeMapRDD.collect.toMap

或者如果需要保留订单:

import scala.collection.immutable.ListMap
val link = ListMap(fieldTypeMapRDD.collect:_*)

但如果你真的很喜欢mutable集合,你可以稍微修改你的代码。只是改变

fieldTypeMapRDD.foreach {

to

fieldTypeMapRDD.toLocalIterator.foreach {

也可以看看这个问题 https://stackoverflow.com/questions/21698443/spark-best-practice-for-retrieving-big-data-from-rdd-to-local-machine.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LinkedHashMap 变量在 foreach 循环之外不可访问 的相关文章

随机推荐

  • 删除子项时,JPA 关系不会更新

    假设有以下场景 Entity public class A OneToMany mappedBy a cascade CascadeType ALL private List b bList Entity public class B Ma
  • create-react-app typescript 将不会运行 npm start

    我在尝试着create react app使用 typescript 但 JSX 和 TS 似乎有问题 我读了一些可能的解决方案 但对我来说并不奏效 I have npm 版本 16 14 7 节点 版本14 8 0 I used npx
  • 当 javascript 创建 html 时,如何通过 onclick 事件传递变量?

    我的 javascript 创建了一行 html 该 html 有一个 onclick 事件调用openSingle 我需要将一个变量传递给该函数 onclick openSingle findID 当我在运行时检查开发面板时 我得到 on
  • 是否可以在JavaScript中捕获滚动条上的鼠标事件

    我有一个 HTML 元素overflow scroll 当我点击该元素时 会触发向该元素注册的点击事件监听器 但是not当我单击元素的滚动条时 是否可以捕获 HTML 元素滚动条上发生的鼠标事件 我想这样做的原因是让视觉弹出元素在发生单击事
  • 用于集成测试的不同日志文件

    我在用SL4j http www slf4j org and Logback http logback qos ch 用于 Tomcat 中托管的 Web 应用程序 我使用 Spring 和 Maven 无配置文件 集成测试是使用 Sure
  • 获取图像高度和宽度作为整数值?

    我尝试过使用 PHP 函数获取图像大小 http php net manual en function getimagesize php 但我无法将图像宽度和高度提取为整数值 我怎样才能实现这个目标 尝试这样 list width heig
  • React:使用不同的键映射多维数组

    如何使用不同的键映射多维数组 这是一个类似的示例数组 我的原始数组是从ajax和PHP mysql查询获得的 这就是我需要这样做的原因 var products id 1 name John phones sony brand sony m
  • 如何配置 Visual Studio 代码以使用 Mac 的标准选项卡切换快捷方式?

    大多数具有选项卡式界面的 OS X 应用程序允许使用Cmd Shift and Cmd Shift 切换选项卡 VSCode 不遵循这一点 有没有办法将其配置为使用这些快捷方式快速切换到下一个 向右 和上一个 向左 选项卡 这种行为不同于C
  • 如何确定 git 历史记录是否是线性的?

    给定两个 git 提交 我如何确定 最好使用管道命令 它们之间的历史记录是否是线性的 换句话说 我想知道我是否有这个 A B C D E F G 而不是这个 C A B E F G D git log min parents 2只会显示至少
  • Scala - 如何在 for 理解块中使用 foreach 循环?

    我有一个简单的代码 override def createContributorsList url String params String F List Contributor getContributorsFromClient url
  • WPF:截屏的方法

    希望修改以下内容以从所有显示器上截取屏幕截图 我尝试过调整它 但我的图像是空白的 写入test png是为了测试 这byte 将被发送到接收应用程序 public byte Take int screenWidth Convert ToIn
  • FirebaseInstanceIdService getToken 返回 null

    我尝试将 FCM 通知添加到我的应用程序中 但出于某种原因 FirebaseInstanceId getInstance getToken 返回 null 由于我没有得到任何堆栈跟踪 我最好的猜测是 FirebaseInstanceIdSe
  • 从 C++ 代码和命令行生成相同的 Key 和 IV

    我的命令行工具 openssl 有问题 或者我的 C 代码有问题 我不知道哪个是不正确的 但是当我使用这两种方法从 passphase 和盐生成密钥和 IV 时 我没有得到相同的密钥 IV 值 您可以看到代码或命令行是否存在任何拼写错误或问
  • 在 foreach 循环中,使用 & 符号或基于键重新分配哪个更好?

    考虑以下 PHP 代码 Method 1 array array 1 2 3 4 5 foreach array as i gt number number array i number print r array Method 2 arr
  • 将 JMeter 报告转换为 JUnit 报告

    如何将 JMeter 报告转换为 JUnit 报告 有些工具 例如 VSTS 知道如何集成 JUnit 报告 但不知道如何集成 JMeter 报告 尽管它们可以运行 JMeter 我创建了一个 XSLT 将 XML JMeter 报告转换为
  • PyMongo Aggregate 如何获取executionStats

    我正在尝试获取特定 mongo 聚合查询的执行统计信息 我运行 db command 但没有给出 执行状态 这就是我正在努力做的事情 如何使用 db command 获取 Python Mongodb Aggregate 解释 https
  • 如何将一个框架分成两部分

    这是俄罗斯方块 玻璃 蓝色 位于左侧 控件 红色面板 位于右侧 换句话说 现在我只想将框架分为两部分 左 较宽 部分是蓝色 右部分是红色 而已 但我似乎没能做到这一点 所以 我的逻辑是 让框架有FlowLayout 然后我添加两个面板 这意
  • POSIX srandom(...) 和 random() 函数的 Windows 等效项?

    我正在尝试将一些代码从 UNIX 移植到 Windows 并且我需要 POSIX 的实现srandom x and random 对于给定的种子函数x 生成与符合 POSIX 1 2001 的编号规则相同的编号规则 Windows 上有哪些
  • 带有 viewPager 的按钮活动?

    请不要评判我 我对 android 开发非常陌生 我想用 viewPager 制作一个应用程序 我有三个具有三种不同布局的页面 但我只是不知道如何处理 viewPager 上第二页上的按钮 我发现了这个问题 如何在viewpager中编写按
  • LinkedHashMap 变量在 foreach 循环之外不可访问

    这是我的代码 var link scala collection mutable LinkedHashMap String String var fieldTypeMapRDD fixedRDD mapPartitionsWithIndex