pyspark - 在 Spark 会话中获得一致的随机值

2024-01-12

我想将一列随机值添加到数据帧(每行都有一个 id)对于我正在测试的东西。我是努力在 Spark 会话中获得可重复的结果 - 每个行 id 的随机值相同。我能够通过使用重现结果

from pyspark.sql.functions import rand

new_df = my_df.withColumn("rand_index", rand(seed = 7))

但只有当我在同一个 Spark 会话中运行它时它才有效。重新启动 Spark 并运行脚本后,我没有得到相同的结果。

我还尝试定义一个 udf,测试是否可以在一个间隔内生成随机值(整数)并使用random从Python与随机种子 set

import random
random.seed(7)
spark.udf.register("getRandVals", lambda x, y: random.randint(x, y), LongType())

但无济于事。

有没有办法确保 Spark 会话中可重复生成随机数使得行 id 获得相同的随机值?我真的很感激一些指导:) 谢谢您的帮助!


我怀疑您获得的种子的通用值相同,但根据分区的顺序不同,分区的顺序受从磁盘读取时数据分布的影响,并且每次可能有更多或更少的数据。但实际上我并不了解你的代码。

rand 函数生成相同的随机数据(否则种子的意义是什么),并且分区以某种方式获得它的一部分。如果你看的话你应该猜出图案!

这是 2 个不同基数数据帧的示例。您可以看到种子给出了相同或超集的结果。因此,在我看来,排序和分区很重要。

from pyspark.sql.functions import *
from pyspark.sql.types import *
from pyspark.sql.functions import col
df1 = spark.range(1, 5).select(col("id").cast("double"))
df1 = df1.withColumn("rand_index", rand(seed = 7))                                   
df1.show()

df1.rdd.getNumPartitions()
print('Partitioning distribution: '+ str(df1.rdd.glom().map(len).collect()))

returns:

+---+-------------------+
| id|         rand_index|
+---+-------------------+
|1.0|0.06498948189958098|
|2.0|0.41371264720975787|
|3.0|0.12030715258495939|
|4.0| 0.2731073068483362|
+---+-------------------+

8 partitions & Partitioning distribution: [0, 1, 0, 1, 0, 1, 0, 1]

更多数据也是如此:

...
df1 = spark.range(1, 10).select(col("id").cast("double"))
...

returns:

+---+-------------------+
| id|         rand_index|
+---+-------------------+
|1.0| 0.9147159860432812|
|2.0|0.06498948189958098|
|3.0| 0.7069655052310547|
|4.0|0.41371264720975787|
|5.0| 0.1982919638208397|
|6.0|0.12030715258495939|
|7.0|0.44292918521277047|
|8.0| 0.2731073068483362|
|9.0| 0.7784518091224375|
+---+-------------------+

8 partitions & Partitioning distribution: [1, 1, 1, 1, 1, 1, 1, 2]

您可以在 Spark 会话内或会话外看到 4 个常见的随机值。

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

pyspark - 在 Spark 会话中获得一致的随机值 的相关文章

随机推荐

  • 重写谷歌自定义搜索字符串

    我之前的自定义谷歌搜索是这样显示的 第一个链接 http raskim lt controller function 音乐 cx 014092587915392242087 3Agc6l6xlpkmq cof FORID 3A11 q th
  • Azure 云应用程序 ERR_CONNECTION_TIMED_OUT

    我想在 azure 容器服务中部署基于容器的应用程序 并遵循本教程 https learn microsoft com en us azure container service dcos swarm container service m
  • 禁止创建临时对象

    在调试多线程应用程序中的崩溃时 我终于在以下语句中找到了问题 CSingleLock m criticalSection TRUE 请注意 它正在创建 CSingleLock 类的未命名对象 因此临界区对象在此语句之后立即解锁 这显然不是程
  • Delphi GUI 设计规范和指南 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找一种方法来标准化我的应用程序布局以提高我的工作效率 因为我浪费了太多时间在每个表单和对话框
  • PackedArrays 有快速的产品操作吗?

    在 Mathematica 中 包含所有机器大小的整数或浮点数的向量 或矩形数组 可以存储在压缩数组中 这些对象占用的内存较少 并且某些操作对它们的速度要快得多 RandomReal如果可能的话 生成一个压缩数组 压缩数组可以用以下命令解压
  • 猜测C2DM是否已连接的方法

    我正在尝试对是否可以接收 C2DM 消息进行最佳猜测 我创建了一个应用程序 它依赖于在物理上无法访问的情况下将信息推送到手机 我知道 C2DM 不能保证传送 但我至少想知道何时可以传送消息 如果不是 我们就会退回到我们自己的推送服务 并且实
  • 检查 pandas 数据框列的字符串类型

    我有一个相当大的 pandas 数据框 11k 行和 20 列 一列具有混合数据类型 主要是数字 浮点 其中散布着少量字符串 在使用混合列中的数据执行一些统计分析之前 我通过查询其他列来对该数据帧进行子集化 但如果存在字符串 则无法执行此操
  • 如何在自定义错误页面中访问 HTTP StatusDescription

    当操作 asp net mvc 5 在数据库中找不到某些内容时 用户必须看到一个带有简短自定义错误消息的页面 例如 Invoice 5 does not exist 此外 响应必须有一个404HTTP 代码 另一个例子 当操作被不正确地调用
  • 使用 Apache POI 在 java 中读取和写入 xls 和 xlsx excel 文件

    我正在编写一个程序 需要读取和写入 Excel 文件 无论格式如何 xls 或 xlsx 我知道 Apache POI 但它似乎有不同的类来处理 xls 文件 HSSF 和 xlsx XSSF 文件 任何人都知道我如何实现我在这里想做的事情
  • 如何在node.js的客户端包含javascript?

    我是 Node js 和 javascript 的初学者 我想在 html 代码中包含外部 javascript 文件 这是 html 代码 index html 并且 这里是 javascript 代码 simple js documen
  • 使用 ITextSharp 将 tif 转换为 pdf 的性能不佳

    Summary 如何减少将 tif 转换为 pdf 所需的时间itextsharp 背景 我正在使用 C 将一些相当大的 tif 转换为 pdfitextsharp 而且我的表现非常糟糕 每个 tif 文件大约 50kb 某些文档最多有 1
  • Webpack 源映射指向缩小包

    我正在为现有项目设置 Webpack 构建过程 并且遇到了源映射的一些问题 我在用devtool eval source map 如果浏览器中发生错误 堆栈跟踪中的每个文件 行号都指向 Webpack 包中压缩为一行的文件 例如 堆栈跟踪的
  • Android - 视图实例在屏幕旋转时获取空值

    我正在使用 Kotlin Android 扩展通过其 id 直接访问视图 我有一个进度条 我可以使用 id 直接在片段中访问它 即progress bar
  • 如何使用 Jasmine 测试 XMLHttpRequest

    如何在没有 jQuery 的情况下测试 XMLHttpRequest 或纯 Javascript AJAX 上的 onreadystatechange 我这样做是因为我正在开发 Firefox 扩展 我想我必须使用间谍 但不知道如何使用 因
  • 对端口“COM1”的访问被拒绝

    我试图打开 COM1 端口 但收到此错误消息 访问端口 COM1 被拒绝 我正在编写一个通过 NET 发送短信的程序 我预计可能会出现错误 但不应出现 访问被拒绝 错误 请给我任何解决方案 如果端口需要任何访问权限 那么我该怎么做 首先 确
  • OOAD书籍推荐:从理论到实践[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我致力于成为一名优秀的面向对象开发人员 OO 引起了我的兴趣 因为我理解模式 知道为什么组合比继承给你更
  • MVC UpdateModel 可以使用企业库 VAB 吗?

    或者我应该说 将 Enterprise Library 5 VAB 与 MVC 结合使用的最简洁方法是什么 我目前使用的形式 ActionResult Save int id FormCollection form SomeModel mo
  • Azure 容器实例在没有明显原因的情况下被终止

    我们每天运行容器实例组 由逻辑应用程序触发 容器基本上连接到队列 处理它并结束 有时 根据事件日志 容器被杀死 日志中没有任何内容 除了我们的应用程序所做的最后一件事 并且它不是在处理结束时 我检查了资源 我们远远低于限制 另外 这种情况并
  • 如何验证以下场景的表单? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对网络开发比较陌生 我的网站使用 HTML jQuery 和 PHP 我想设计一个表单并通过以下方式验证它 一个简单的网页 有输入框 2
  • pyspark - 在 Spark 会话中获得一致的随机值

    我想将一列随机值添加到数据帧 每行都有一个 id 对于我正在测试的东西 我是努力在 Spark 会话中获得可重复的结果 每个行 id 的随机值相同 我能够通过使用重现结果 from pyspark sql functions import