从 Pyspark 数据帧创建字典显示 OutOfMemoryError: Java 堆空间

2023-12-23

我见过并尝试过很多existing https://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-errorStackOverflow 发布了有关此问题的帖子,但没有任何效果。我猜我的 JAVA 堆空间没有我的大型数据集预期的那么大,我的数据集包含 650 万行。我的 Linux 实例包含 4 核 64GB RAM。按照这个建议 https://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error我需要修复我的代码,但我认为从 pyspark 数据帧制作字典应该不会很昂贵。如果有其他计算方法,请告诉我。

我只想从我的 pyspark 数据帧创建一个 python 字典,这是我的 pyspark 数据帧的内容,

property_sql_df.show() shows,

+--------------+------------+--------------------+--------------------+
|            id|country_code|       name|          hash_of_cc_pn_li|
+--------------+------------+--------------------+--------------------+
|  BOND-9129450|          US|Scotron Home w/Ga...|90cb0946cf4139e12...|
|  BOND-1742850|          US|Sited in the Mead...|d5c301f00e9966483...|
|  BOND-3211356|          US|NEW LISTING - Com...|811fa26e240d726ec...|
|  BOND-7630290|          US|EC277- 9 Bedroom ...|d5c301f00e9966483...|
|  BOND-7175508|          US|East Hampton Retr...|90cb0946cf4139e12...|
+--------------+------------+--------------------+--------------------+

我想要的是用 hash_of_cc_pn_li 制作一本字典key和 id 作为a list value.

预期输出

{
  "90cb0946cf4139e12": ["BOND-9129450", "BOND-7175508"]
  "d5c301f00e9966483": ["BOND-1742850","BOND-7630290"]
}

到目前为止我所尝试过的

%%time
duplicate_property_list = {}
for ind in property_sql_df.collect(): 
     hashed_value = ind.hash_of_cc_pn_li
     property_id = ind.id
     if hashed_value in duplicate_property_list:
         duplicate_property_list[hashed_value].append(property_id) 
     else:
         duplicate_property_list[hashed_value] = [property_id] 

我现在在控制台上得到的内容:

java.lang.OutOfMemoryError:Java堆空间

并显示此错误Jupyter 笔记本输出

ERROR:py4j.java_gateway:An error occurred while trying to connect to the Java server (127.0.0.1:33097)

从 pyspark 数据帧制作字典应该不会很昂贵

就运行时而言确实如此,但这很容易占用大量空间。特别是如果你正在做property_sql_df.collect(),此时您将整个数据帧加载到驱动程序内存中。在 650 万行中,如果每行有 10KB 或 10K 个字符,那么您就已经达到 65GB,而且我们甚至还没有访问字典。

首先,您可以只收集您需要的列(例如,不收集name)。其次,您可以在 Spark 中进行上游聚合,这将节省一些空间,具体取决于有多少id是否有每hash_of_cc_pn_li:

rows = property_sql_df.groupBy("hash_of_cc_pn_li") \
  .agg(collect_set("id").alias("ids")) \
  .collect()

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

从 Pyspark 数据帧创建字典显示 OutOfMemoryError: Java 堆空间 的相关文章

  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别

    Django Rest 框架有一个主键相关字段 http www django rest framework org api guide relations primarykeyrelatedfield其中列出了我的 IDmany to m
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • Spark Scala 相当于 SKEW 连接提示

    Spark SQL 有一个可用的倾斜提示 请参阅here https docs databricks com spark latest spark sql skew join html relation columns and skew v
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • Python:检查列表中至少一个正则表达式是否与字符串匹配的优雅方法

    我有一个 python 中的正则表达式列表和一个字符串 有没有一种优雅的方法来检查列表中的至少一个正则表达式是否与字符串匹配 我所说的优雅 是指比简单地循环所有正则表达式并根据字符串检查它们并在找到匹配项时停止更好的方法 基本上 我有这个代
  • 跨一对多关系选择 COUNT

    对于两张桌子 player and team 对于 1 关系 球员与球队 您如何计算每个球队有多少球员 失败的尝试 SELECT team teamid SELECT COUNT player team FROM player FROM t
  • Django 注释总和

    我正在尝试对查询集中包含多行的列进行简单求和 我的直接问题是 a 我该如何设置get queryset 包括一列的总和以及 b 如何访问模板中的该元素 下列的this https stackoverflow com questions 86
  • Python正则表达式匹配:## ##

    我正在逐行搜索文件中是否出现 random string 除了多个 的情况外 它都有效 pattern prog re compile pattern string lala hey there result prog search str
  • 优化 R 中的买入和卖出信号

    我需要优化现有的买入和卖出信号 就像 r 中的 backtrader 一样 Signal会看起来像 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 where 1 持有 0 买入 1 卖出 优化信号后应该是 1 1
  • Octave信号包安装

    我使用的是 Ubuntu 16 04 目前使用 Octave 作为 Matlab 的倒数进行信号处理 一切都很好 直到我需要使用medfilt1函数来获取中位数 Octave 生成 了一个错误报告 指出我的系统上未安装信号包 浏览了一下后我
  • 如何从 Int 进行转换?到字符串

    在 Swift 中 我无法通过以下方式将 Int 转换为 String var iString Int 100 var strString String iString 但是我的变量是 Int 吗 有错误 Cant invoke init
  • 使用 Webpack 连接并缩小所有 less 文件而不导入它们

    我有一个包含大约 20 个独立的较少文件的文件夹 我需要通过 Webpack 将它们连接成一个文件并将其存储在我的 dist 文件夹中 我当前的Webpack配置文件如下 const path require path const webp
  • IBOutlet 何时初始化?

    我通过 Interface Builder 设置了文本视图的出口 文本视图加载正常 但是我无法以编程方式访问它的任何属性 因为出口始终是nil 什么时候实例化 即使在我之后applicationDidFinishLoading被调用 它仍然
  • 禁用 JList 单元格选择属性

    我正在尝试显示一个array of strings in a JList 然后将其添加到JPanel using Java Swing 我在显示数据时没有问题Jlists 但是我想删除允许用户选择项目的默认属性Jlist 我试图简单地向用户
  • 在无向图中查找循环(​​boost)并返回其顶点和边

    我需要一个在无向图中找到循环 提升 并返回其顶点和边的函数 它只需要返回图中一个周期的顶点 边 我的问题是 使用 boost 来做到这一点的最佳方法是什么 我没有使用它的经验 我不知道Boost 但是here https stackover
  • Node.js 事件循环

    Node js I O 事件循环是单线程还是多线程 如果我有多个 I O 进程 节点会将它们放入外部事件循环中 它们是按顺序处理 首先是最快的 还是处理事件循环以同时处理它们 以及哪些限制 事件循环 Node js 事件循环在单个线程下运行
  • 在 Orchard CMS 中将不同的 CSS 文件添加到不同的页面?

    假设 Orchard CMS 中有两个页面 主页和关于我们页面 我想在主页上使用 RoyalSlider 它有自己的 CSS 文件 如何仅将其包含在主页上而不包含在 关于我们 页面上 在 Orchard CMS 中 我使用 Contoso
  • Android 地图 v2 在第二次充气时出现错误

    我正在尝试在我的应用程序中使用新的 Android 地图 我有一个 FragmentActivity 其布局包含 除其他外
  • scoverage:结合 test 和 it:test 的覆盖率

    我用过滤器分割了单元测试和集成测试 lazy val FunTest config it extend Test def funTestFilter name String Boolean name endsWith Spec def un
  • 正则表达式选择多行字符串中的最后一行

    我有一个 ANT 脚本 它有一个属性 其值可以是一行或多行 例如 财产 prop1 A 12 1 REL B121000 10 18 2011 1700 A 12 1 REL B121001 10 25 2011 6059 A 12 1 R
  • 获取 NullPointerException:尝试在 Android 中读取字节数组时尝试获取 Parcelable 中空数组的长度

    我有一个实现 Parcelable 的类 我的所有值都通过 writeToParcel 方法设置正常 但在构造函数中读取时 我遇到了引发 NullPointerException 的字节数组问题 public final class Pro
  • 字符串被分配给列表而没有编译错误[重复]

    这个问题在这里已经有答案了 据我所知 Java 中泛型的主要目的之一是提供编译时类型安全 如果它被编译 代码将毫无问题地运行 那么为什么下面的代码会被编译呢 public static void main String args Strin
  • Python与selenium并行执行

    我对使用 selenium 在 python 中并行执行感到困惑 似乎有几种方法可以解决这个问题 但有些似乎已经过时了 有一个名为的 python 模块python wd parallel好像有一些功能可以做到这一点 但这是 2013 年的
  • 从 Pyspark 数据帧创建字典显示 OutOfMemoryError: Java 堆空间

    我见过并尝试过很多existing https stackoverflow com questions 37335 how to deal with java lang outofmemoryerror java heap space er