非时间戳列上的 Spark 结构化流窗口

2024-05-03

我收到以下形式的数据流:

+--+---------+---+----+
|id|timestamp|val|xxx |
+--+---------+---+----+
|1 |12:15:25 | 50| 1  |
|2 |12:15:25 | 30| 1  |
|3 |12:15:26 | 30| 2  |
|4 |12:15:27 | 50| 2  |
|5 |12:15:27 | 30| 3  |
|6 |12:15:27 | 60| 4  |
|7 |12:15:28 | 50| 5  |
|8 |12:15:30 | 60| 5  |
|9 |12:15:31 | 30| 6  |
|. |...      |...|... |

我有兴趣将窗口操作应用于xxx列就像 Spark Streaming 中对时间戳的窗口操作一样,具有一定的窗口大小和滑动步长。

让在groupBy下面有窗口函数,lines表示窗口大小为 2、滑动步长为 1 的流数据帧。

val c_windowed_count = lines.groupBy(
  window($"xxx", "2", "1"), $"val").count().orderBy("xxx")

因此,输出应如下所示:

+------+---+-----+
|window|val|count|
+------+---+-----+
|[1, 3]|50 |  2  |
|[1, 3]|30 |  2  |
|[2, 4]|30 |  2  |
|[2, 4]|50 |  1  |
|[3, 5]|30 |  1  |
|[3, 5]|60 |  1  |
|[4, 6]|60 |  2  |
|[4, 6]|50 |  1  |
|...   |.. | ..  |

我尝试使用partitionBy但 Spark 结构化流不支持它。

我正在使用 Spark 结构化流2.3.1。

Thanks!


目前无法使用 Spark 结构化流以这种方式在非时间戳列上使用窗口。然而,你能做的是转换xxx列到时间戳列,做groupBy and count,然后再变换回来。

from_unixtime可用于将自 1970-01-01 以来的秒数转换为时间戳。使用xxx列为秒,可以创建一个假时间戳在窗口中使用:

lines.groupBy(window(from_unixtime($"xxx"), "2 seconds", "1 seconds"), $"val").count()
  .withColumn("window", struct(unix_timestamp($"window.start"), unix_timestamp($"window.end")).as("window"))
  .filter($"window.col1" =!= 0)
  .orderBy($"window.col1")

上面,分组是在转换后的时间戳上完成的,下一行会将其转换回原始数字。过滤器已完成,因为前两行将是一个窗口[0,2](即仅在具有xxx equals 1)但可以跳过。

上述输入的结果输出:

+------+---+-----+
|window|val|count|
+------+---+-----+
| [1,3]| 50|    2|
| [1,3]| 30|    2|
| [2,4]| 30|    2|
| [2,4]| 50|    1|
| [3,5]| 30|    1|
| [3,5]| 60|    1|
| [4,6]| 60|    2|
| [4,6]| 50|    1|
| [5,7]| 30|    1|
| [5,7]| 60|    1|
| [5,7]| 50|    1|
| [6,8]| 30|    1|
+------+---+-----+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非时间戳列上的 Spark 结构化流窗口 的相关文章

随机推荐

  • 无法从超时获得自动化扩展:从渲染器接收消息超时

    使用 Selenium Webdriver C 我时不时会收到下一个错误 System InvalidOperationException 未知错误 无法从超时获取自动化扩展 从渲染器接收消息超时 3 959 会话信息 chrome 37
  • 点分隔的字符串资源名称有什么用?

    我使用 Snake style 来命名字符串资源 在某人的代码中 我发现了另一种带有点的符号 我无法找到关于这个主题的任何单词
  • 如何在 Windows 7 中配置 cabal?

    我已经在Windows 7中安装了Haskell Platform 2012 我在控制台中编写cabal update我收到消息说有新版本的阴谋集团 我写的cabal install cabal install 安装完成后 它告诉我 cab
  • 如何删除 TextBlock 周围的多余空间

    我为我的 TextBlock 设置了以下内容
  • 将嘈杂的硬币重塑为圆形

    我正在使用 JavaCV OpenCV 包装器 进行硬币检测 但是当硬币连接时我遇到了一些问题 如果我尝试侵蚀它们以分离这些硬币 它们就会失去圆形形状 如果我尝试计算每个硬币内部的像素 可能会出现问题 因此某些硬币可能会被误算为更大的硬币
  • SQL Server 2008 FileStream 与普通文件

    我正在创建一个像 youtube 这样的应用程序来存储视频 我需要一些建议 我应该使用 SQL Server FileStream 来存储视频文件 还是应该将它们存储在硬盘上的某个位置并将路径记录为 SQL Server 内的 varcha
  • 将第一行粘贴到列表中的列名称

    我有 68 个数据文件 全部具有相同的标识符 但具有不同的指示符 我将这些单独的文件转换为一个列表 其中每个数据框作为一个单独的元素 每个数据框的第一行是年份 我想将其粘贴到列名称中 我希望能够用 分隔它 例如 现在列名称为 Arbeits
  • 在 WPF 中向上/向下移动 ListBoxItem

    我创建了一个包含文件名的列表框 我想为用户提供一个选项 可以使用上 下按钮并使用拖放来上下移动文件名 任何人都知道如何实现此功能 XAML 代码
  • 如何续订过期的 ClickOnce 证书?

    我需要对一年多没有碰过的 ClickOnce 应用程序进行一些更改 因此证书已过期 我读过 使用新证书发布将使应用程序失败 因为它将使用不同的密钥进行签名 因此我认为我需要使用相同的证书但不知道如何更新它 如果您正在寻求快速解决方案 那么您
  • 如何将数字 010 转换为字符串“010”

    在控制台中执行一些随机表达式时 我发现 010 返回8 甚至 011 0100 都通过考虑八进制数字系统返回结果 如果我想转换一个数字 我该怎么做010到一个字符串 010 不仅为了010但对于每个相似的数字 我设法找到了一种类似的解释he
  • FindObjectOfType 返回 null

    我遇到的问题是我捡起一个掉落的物品 为枪添加弹药 使用所有方法和变量构建了一个 Gun 类 构建了一个从 Gun 类派生的 Rifle 类 步枪工作完美 没有任何问题 我现在添加一个 拾取 系统 其中 x 数量的敌人会掉落拾取 这是要拾取的
  • 使用 WIA 检测所有可用的扫描仪分辨率

    如何使用 WIA 2 0 以编程方式检测指定扫描仪的所有可用分辨率 以 dpi 为单位 支持的页面大小怎么样 有任何想法吗 伪代码 假设您有设备信息 请连接到它 var device deviceInfo Connect 如果设备不为空 那
  • Postgres 检查文本数组中的约束以确保值的有效性

    我想创建类似的东西 CHECK ALL scopes IN read write delete update scopes这是表中的一个字段text 我想确保该数组中的所有值都是上面的值之一 对此有何意见 是否有可能通过以下方式获取这些值S
  • 如何定义与 Backbone 一起使用的 jade 模板

    我需要使用模板来渲染每个 ItemView var ItemView Backbone View extend className item template template itemTemplate html initialize fu
  • 如果新块大小小于初始块大小,我是否应该强制重新分配检查?

    在这种情况下 realloc 会失败吗 int a NULL a calloc 100 sizeof a printf 1 ptr d n a a realloc a 50 sizeof a printf 2 ptr d n a if a
  • Keycloak 重定向 URI 提供 https://localhost 而不是 http://localhost

    我正在尝试在 Keycloak 上验证 Cordova Android 应用程序 我之前提出过一个关于它的问题 但我在这里将其简化为仅提供要点 因为我在过去 2 3 天中发现了很多东西 Cordova Android 应用程序中的网页不可用
  • 在 JSFiddle 上运行的简单 AngularJS

    如何用以下代码制作 jsfiddle div ul li num li ul div
  • 主表节点缺失

    我已经安装了 Microsoft SQL Server 2012 Express 当我启动 Management Studio 时 我无法查看系统数据库上的任何 表节点 这是一个错误吗 这是一个错误 如以下链接所述 http connect
  • Laravel 4 - 工匠错误 SQLSTATE[42000]

    我正在尝试为我的用户表创建一个新的迁移 我有以下架构 Schema create users function t t gt increments id t gt string username 16 t gt string passwor
  • 非时间戳列上的 Spark 结构化流窗口

    我收到以下形式的数据流 id timestamp val xxx 1 12 15 25 50 1 2 12 15 25 30 1 3 12 15 26 30 2 4 12 15 27 50 2 5 12 15 27 30 3 6 12 15