Spark-单调递增 id 在数据帧中无法按预期工作?

2024-02-16

我有一个数据框df在 Spark 中,它看起来像这样:

scala> df.show()
+--------+--------+
|columna1|columna2|
+--------+--------+
|     0.1|     0.4|
|     0.2|     0.5|
|     0.1|     0.3|
|     0.3|     0.6|
|     0.2|     0.7|
|     0.2|     0.8|
|     0.1|     0.7|
|     0.5|     0.5|
|     0.6|    0.98|
|     1.2|     1.1|
|     1.2|     1.2|
|     0.4|     0.7|
+--------+--------+

我尝试使用以下代码包含 id 列

val df_id = df.withColumn("id",monotonicallyIncreasingId)

但 id 列不是我所期望的:

scala> df_id.show()
+--------+--------+----------+
|columna1|columna2|        id|
+--------+--------+----------+
|     0.1|     0.4|         0|
|     0.2|     0.5|         1|
|     0.1|     0.3|         2|
|     0.3|     0.6|         3|
|     0.2|     0.7|         4|
|     0.2|     0.8|         5|
|     0.1|     0.7|8589934592|
|     0.5|     0.5|8589934593|
|     0.6|    0.98|8589934594|
|     1.2|     1.1|8589934595|
|     1.2|     1.2|8589934596|
|     0.4|     0.7|8589934597|
+--------+--------+----------+

正如你所看到的,从 0 到 5 进展顺利,但下一个 id 是8589934592代替6等等。

那么这里出了什么问题呢?为什么 id 列没有在此处正确索引?


它按预期工作。此函数不适用于生成连续值。相反它按分区编码分区号和索引 https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions%24

生成的ID保证单调递增且唯一,但不连续。当前的实现将分区 ID 放在高 31 位中,将每个分区内的记录号放在低 33 位中。假设数据框的分区数少于10亿个,每个分区的记录数少于80亿条。

例如,考虑一个具有两个分区的 DataFrame,每个分区有 3 条记录。该表达式将返回以下 ID:

0, 1, 2, 8589934592 (1L << 33), 8589934593, 8589934594.

如果您想要连续的数字,请使用RDD.zipWithIndex.

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

Spark-单调递增 id 在数据帧中无法按预期工作? 的相关文章

随机推荐

  • Flex:包裹的物品与其他物品的宽度相同

    我使用 Flex 创建一个多列列表 该列表根据容器的宽度调整列数 我发现的问题是 如果我想通过将 flex grow 设置为 1 来使用父级的完整宽度 则最后一个换行行中的项目会未对齐 因为它们试图填充父级 我发现了两种对我不起作用的解决方
  • 如果屏幕尺寸小于指定值,则将水平块转换为垂直块

    在下面的代码中 我希望水平三列块放置并堆叠在彼此之上 以防容器的大小小于 X 像素 对于较小或移动设备 我应该如何以及在表的哪个元素上应用此属性 请注意 代码是一个内容块 因此我不想将 CSS 应用于整个电子邮件模板或电子邮件除非这是解决这
  • HKLM\Software 下的 OpenSubKey 返回 null

    这是我的代码 Microsoft Win32 RegistryKey key Microsoft Win32 Registry LocalMachine OpenSubKey SOFTWARE ADM 该注册表项存在于计算机上 键始终为空
  • ASP.NET Core上的静态文件

    我正在尝试启用静态文件ASP NET Core 2 0Web应用程序 我在一个名为 updater 的文件夹中有一堆文件 该文件夹位于wwwroot文件夹 为了允许访问它们 我添加了 app UseStaticFiles new Stati
  • 使用 numpy 将二进制掩码应用于 RGB 图像时出现问题

    我正在尝试使用 numpy 将二进制掩码应用于 RGB 图像 我找到了这个https stackoverflow com a 26843467 4628384 https stackoverflow com a 26843467 46283
  • Android NDK:从 C++ 调用 Java 函数

    我对 JNI 非常陌生 在将 C iOS 代码移植到 JNI 之前 我试图弄清楚某些事情是如何工作的 我成功地让 NDK 示例之一在 Android studio 中运行 我可以看到 Java 如何调用 C 函数 我一直在四处寻找并获取大量
  • 从 SQL 导出数据并写入文本文件(不能使用 CP 或 SP)

    因此 我正在寻找一种简单的方法来从 SQL Server 2000 数据库导出数据并将其写入逗号分隔的文本文件 它只有一张表 只有大约 1 000 行 我是 C 新手 所以如果这是一个愚蠢的问题 请原谅我 这是一项非常简单的任务 但您需要了
  • 如何在使用 XSL-FO 生成的 PDF 中插入换行符

    我正在使用 XSL FO 和 XML 生成 PDF 在文本框中 用户可以输入 1 等数据 然后按 ENTER 然后按 2 ENTER 3 等 但在 XML 和 PDF 中 输出是 1234567 如何保留换行符 我已经尝试过了white s
  • Vue props 数据未在子组件中更新

    大家好 我只是想要一些关于 vue props 数据的解释 所以我将值从父组件传递到子组件 问题是 当父数据发生数据更改 更新时 它不会在子组件中更新 Vue component child component template div c
  • Blazor JsInterop:调用 JS 时 Div 不可用

    该问题涉及客户端 Blazor 组件 该组件包含一个被组件变量隐藏的 div bool 打开 我需要组件在组件代码文件中显示 div 之后运行一些 Javascript 以便调整它在屏幕上的位置 下面的代码应该更好地解释这一点 组件 raz
  • 为什么要使用弹簧? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • NetworkStream 和 Socket 类有什么区别?

    我有一个项目 我可能想抽象客户端和服务器之间的通信 我最初使用的是套接字和 TCP 然后我认为能够切换到进程间通信通道可能会很好 然后我查看了 System IO PipedStream 类 发现 PipeStream 和 Socket 类
  • PowerShell Start-Service无限运行

    Problem 因此 我有一段代码用于启动服务 如果服务花费太长时间并且在大多数情况下工作正常 则服务超时 不幸的是 当该服务尝试启动无法启动的服务时 它会显示以下警告消息 WARNING Waiting for ServiceName
  • 从数组中删除重复的字符串?

    如何在不使用 HashSet 的情况下从字符串数组中删除重复的字符串 我尝试使用循环 但没有删除的话 StringBuffer outString new StringBuffer Our aim and isn t easy you yo
  • 创建 OpenLayer 圈时出现问题

    如何在openlayer地图中画一个圆 我尝试过不同的方式 但它不起作用 请帮助我编写代码 我使用了以下代码 但它创建了多边形 var p1 new OpenLayers Geometry Point 439000 114000 var p
  • 我可以在我的视图模型中创建一个实时数据观察器吗?或者我应该始终观察片段/活动?

    我是 MVVM 新手 因此 我的片段 活动向服务器发出了 2 个请求 第一个请求的结果将用作第二个请求的输入参数 因此 首先在我的片段中 当单击按钮时 我会发出请求以检查用户是否被禁止 如果没有 则该用户可以创建帖子 所以首先我检查用户是否
  • 检测两年以上的浏览器

    这是一个拥有大约 10 000 个用户的私人公司网站 我已经看到了一些浏览器检测的努力 但与浏览器的年龄无关 有人对此有想法吗 相关项目 http fresh browsers com en http fresh browsers com
  • RESTEasy Mock 与异常映射器与上下文

    RESTEasy 模拟框架工作正常 没有异常映射器 接收请求并返回带有预期内容的实体 注册异常映射器并强制异常后 当 RESTEasy 内部调用 ResteasyProviderFactory getContextData type 时 调
  • 如果 div 包含

    标签,jQuery 返回 true 或 false

    让我们来看看 div p this div contains a p tag p div div this one is not div 如果 div 包含特定标签 如上例中的 p 如何为变量分配布尔值 true 或 false div h
  • Spark-单调递增 id 在数据帧中无法按预期工作?

    我有一个数据框df在 Spark 中 它看起来像这样 scala gt df show columna1 columna2 0 1 0 4 0 2 0 5 0 1 0 3 0 3 0 6 0 2 0 7 0 2 0 8 0 1 0 7 0