如何在sparklyr中按3分钟时间戳聚合数据?

2024-02-04

我在用sparklyr进行一些快速分析。我在使用时间戳时确实遇到一些问题。我有两个不同的数据帧:一个以 1 分钟间隔行,另一个以 3 分钟间隔行。

第一个数据集:(1 分钟间隔)

id  timefrom    timeto  value
10  "2017-06-06 10:30:00"   "2017-06-06 10:31:00"   50
10  "2017-06-06 10:31:00"   "2017-06-06 10:32:00"   80
10  "2017-06-06 10:32:00"   "2017-06-06 10:33:00"   20
22  "2017-06-06 10:33:00"   "2017-06-06 10:34:00"   30
22  "2017-06-06 10:34:00"   "2017-06-06 10:35:00"   50
22  "2017-06-06 10:35:00"   "2017-06-06 10:36:00"   50

第二个数据集:(3 分钟间隔)

id  timefrom    timeto  value
10  "2017-06-06 10:30:00"   "2017-06-06 10:33:00"   30
22  "2017-06-06 10:33:00"   "2017-06-06 10:36:00"   67
32  "2017-06-06 10:36:00"   "2017-06-06 10:39:00"   28
14  "2017-06-06 10:39:00"   "2017-06-06 10:42:00"   30
27  "2017-06-06 10:42:00"   "2017-06-06 10:55:00"   90

为了比较这两个数据集的值,我必须将第一个数据集聚合 3 分钟并计算平均值value。此外,我必须从第二个数据集中找到最适合的窗口。

The result应该看起来像这样:

id  timefrom    timeto  value1  value2
10  "2017-06-06 10:30:00"   "2017-06-06 10:33:00"   30  50
22  "2017-06-06 10:33:00"   "2017-06-06 10:36:00"   67  43.3

仅通过sparklyr 是否可以实现这一目标?我感谢您的帮助!


假设您的数据已经解析:

df1
# # Source:   table<df1> [?? x 4]
# # Database: spark_connection
#      id timefrom            timeto              value
#   <int> <dttm>              <dttm>              <int>
# 1    10 2017-06-06 08:30:00 2017-06-06 08:31:00    50
# 2    10 2017-06-06 08:31:00 2017-06-06 08:32:00    80
# 3    10 2017-06-06 08:32:00 2017-06-06 08:33:00    20
# 4    22 2017-06-06 08:33:00 2017-06-06 08:34:00    30
# 5    22 2017-06-06 08:34:00 2017-06-06 08:35:00    50
# 6    22 2017-06-06 08:35:00 2017-06-06 08:36:00    50

df2
# # Source:   table<df2> [?? x 4]
# # Database: spark_connection
#      id timefrom            timeto              value
#   <int> <dttm>              <dttm>              <int>
# 1    10 2017-06-06 08:30:00 2017-06-06 08:33:00    30
# 2    22 2017-06-06 08:33:00 2017-06-06 08:36:00    67
# 3    32 2017-06-06 08:36:00 2017-06-06 08:39:00    28
# 4    14 2017-06-06 08:39:00 2017-06-06 08:42:00    30
# 5    27 2017-06-06 08:42:00 2017-06-06 08:55:00    90

您可以使用window功能 https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions%24@window(timeColumn:org.apache.spark.sql.Column,windowDuration:String,slideDuration:String,startTime:String):org.apache.spark.sql.Column:

exprs <- list(
  "id", "value as value2",
  # window generates structure struct<start: timestamp, end: timestamp>
  # we use dot syntax to access nested fields
  "window.start as timefrom", "window.end as timeto")

df1_agg <- df1 %>% 
  mutate(window = window(timefrom, "3 minutes")) %>% 
  group_by(id, window) %>% 
  summarise(value = avg(value)) %>%
  # As far as I am aware there is no sparklyr syntax 
  # for accessing struct fields, so we'll use simple SQL expression
  spark_dataframe() %>% 
  invoke("selectExpr", exprs) %>% 
  sdf_register() %>%
  print()

# Source:   table<sparklyr_tmp_472ee8ba244> [?? x 4]
# Database: spark_connection
     id value2 timefrom            timeto             
  <int>  <dbl> <dttm>              <dttm>             
1    22   43.3 2017-06-06 08:33:00 2017-06-06 08:36:00
2    10   50.0 2017-06-06 08:30:00 2017-06-06 08:33:00

然后你就可以通过id和时间戳列:

df2 %>% inner_join(df1_agg, by = c("id", "timefrom", "timeto"))
# # Source:   lazy query [?? x 5]
# # Database: spark_connection
#      id timefrom            timeto              value value2
#   <int> <dttm>              <dttm>              <int>  <dbl>
# 1    10 2017-06-06 08:30:00 2017-06-06 08:33:00    30   50.0
# 2    22 2017-06-06 08:33:00 2017-06-06 08:36:00    67   43.3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在sparklyr中按3分钟时间戳聚合数据? 的相关文章

  • Spark EC2 SSH连接错误SSH返回代码255

    每次我尝试通过 Spark ec2 spark ec2 py 文件在 AWS 上启动 Spark 集群时 都会收到 SSH 连接错误 最终解决了 但是浪费了很多时间 在您将其标记为重复之前 我知道有很多类似的问题被问到 但有两个关键区别 a
  • 如何将 DataFrame 作为输入传递给 Spark UDF?

    我有一个数据框 我想对每一行应用一个函数 该函数依赖于其他数据帧 简化的例子 我有如下三个数据框 df sc parallelize a b 1 c d 3 toDF feat1 feat2 value df other 1 sc para
  • Spark中如何获取map任务的ID?

    Spark中有没有办法获取map任务的ID 例如 如果每个映射任务都调用用户定义的函数 我可以从该用户定义的函数中获取该映射任务的 ID 吗 我不确定您所说的地图任务 ID 是什么意思 但您可以使用以下方式访问任务信息TaskContext
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • 将列表中的列转换为 R 中的数据框

    我有使用 R 创建的以下列表 set seed 326581 X1 rnorm 10 0 1 Y1 rnorm 10 0 2 data data frame X1 Y1 lst lt replicate 100 df smpl lt dat
  • 如何在SparkR中进行map和reduce

    如何使用 SparkR 进行映射和归约操作 我能找到的只是有关 SQL 查询的内容 有没有办法使用 SQL 进行映射和减少 See 写入从 SparkR map 返回的 R 数据帧 https stackoverflow com quest
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • Spark 3 KryoSerializer 问题 - 无法找到类:org.apache.spark.util.collection.OpenHashMap

    我正在将 Spark 2 4 项目升级到 Spark 3 x 我们遇到了一些现有 Spark ml 代码的问题 var stringIndexers Array StringIndexer for featureColumn lt FEAT
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • Spark Scala 相当于 SKEW 连接提示

    Spark SQL 有一个可用的倾斜提示 请参阅here https docs databricks com spark latest spark sql skew join html relation columns and skew v

随机推荐

  • 多级视图:expandablelistview

    我正在尝试编写多级树 我确实看过expandablelistview 但它只支持两个级别 我确实查看了其他问题 SO 和帖子 我发现的最有希望的帖子是http mylifewithandroid blogspot com 2011 02 3
  • Py2Exe,[Errno 2]没有这样的文件或目录:'numpy-atlas.dll'

    我在我的程序中包含了 matplotlib 我在谷歌上搜索了 numpy atlas dll 我似乎是地球上唯一遇到这个问题的人 setup py from setuptools import setup import py2exe set
  • 二维中两个向量的平分线(可能共线)

    一般如何找到两个向量的二等分 b bx by 我们考虑两个非零向量 u ux uy v vx vy 可能是共线的 对于非共线向量我们可以写 bx ux u vx v by uy u vy v 但对于共线向量 bx by 0 Example
  • WPF TreeView SelectedItemChanged 未触发

    我正在尝试创建一个 TreeView 它允许用户重命名 TreeView 中的节点 该树表示 HL7 消息 并按从段到子组件的层次结构进行构建 例如 PID PID 1 PID 2 etc 我需要允许用户选择一个节点 按 F2 将节点置于编
  • getMethod("summary",signature = "FitDiff") 中的错误

    我正在使用比较 lavaan 对象semTools compareFit 它抛出一条非常奇怪的错误消息 我还尝试了以下可重现的示例 data HolzingerSwineford1939 package lavaan HS modelA l
  • 使用 jQuery 检测首页加载?

    我需要检测 jQuery 中页面的首次加载 以便仅在用户第一次导航到该页面时加载页面时才能执行某些操作 类似于服务器端代码页 ispostbasck 我已经测试了 document ready 每次页面加载时它都会触发 因此这不会提供我需要
  • JOOQ Oracle 数字精度和 Java 数字映射

    谁能告诉我或提供关于 oracle 数字精度和 java 类型之间映射的参考 即数字 x 在什么时候映射到短整型 整型 长型 BigInteger 等 Java 整数类型与 Oracle 并不完美匹配NUMBER类型 本质上 有两种方法可以
  • 为什么选择 Phing/Ant 而不是 Bash 和 Make? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直在工作中使用 Phing 它是我到达那里时设置的 并考虑将它用于一些个人项目 我还没有弄清楚的一件事是最大的吸引力是什么 Phing 或
  • Swift - Google 地图更新当前位置的路线

    我目前正在学习 Swift 的 Google Maps API 因此我有几个问题希望你们能回答 碰巧我正在尝试创建一个简单地为用户提供方向的应用程序 就像苹果地图和谷歌地图一样 它只是为用户绘制一条方向路线 我已经成功地完成了这项工作 但我
  • 布尔运算符的差异:& 与 && 和 |与||

    我知道规则 and 但什么是 and 请用例子向我解释这些 这些是按位 AND 和按位 OR 运算符 int a 6 110 int b 4 100 Bitwise AND int c a b 110 100 100 Bitwise OR
  • 提取 pandas 数据框中的嵌套 JSON

    我正在尝试在以下 pandas 数据框中解压嵌套的 JSON id info 0 0 u a u good u b u type1 u a u bad u b u type2 1 1 u a u bad u b u type1 u a u
  • 访问集合中的唯一元素[重复]

    这个问题在这里已经有答案了 我有一个set在Python中 我根据条件一一删除元素 当集合只剩下 1 个元素时 我需要返回该元素 如何从集合中访问该元素 一个简化的例子 S set range 5 for i in range 4 S S
  • CAP定理是否意味着ACID对于分布式数据库是不可能的?

    有NoSQL ACID 分布式 数据库 https stackoverflow com questions 2608103 is there any nosql that is acid compliant 尽管有 CAP 定理 这怎么可能
  • 警告:库类 android.net.http.AndroidHttpClient 扩展或实现程序类 org.apache.http.client.HttpClient

    我在导出 Android 应用程序时从 proguard 收到这些奇怪的错误 我已经编辑了配置文件 但我找不到剩下的错误是什么 我已经添加了外部 Jars 配置了 dontwarn 现在我找不到剩下的问题 2013 11 22 17 13
  • 房间持久性:实体和 Pojo 必须有一个可用的公共构造函数

    我正在尝试通过 Room Persistence 库向我的 Android 应用程序添加数据库 但收到此错误 错误 实体和 Pojo 必须有一个可用的公共构造函数 您可以有一个空构造函数 也可以有一个参数与字段匹配 按名称和类型 的构造函数
  • 方向更改时保留软输入/IME 状态

    我的应用程序中遇到了一个小的用户体验问题 当软键盘打开时从横向更改为纵向 或纵向更改为横向 时 键盘会隐藏 我想要做的是停止键盘在方向改变时隐藏 Edit 我不想强制打开键盘 如果键盘在方向更改之前被隐藏 我希望它保持隐藏状态 我想reta
  • 将一个文件夹中的所有文件移动到另一个文件夹中?

    当我将一个文件从一个位置移动到另一个位置时 rename path filename newpath filename 如何将一个文件夹中的所有文件移动到另一个文件夹中 尝试了这个没有结果 rename path newpath 一个稍微冗
  • 如何从 JavaScript 调用 REST API

    我有一个提供 json 数据的网址 我想从 javascript 访问该 URL 但收到此错误 纯文本文档的字符编码未声明 如果文档包含 US ASCII 范围之外的字符 则在某些浏览器配置中 该文档将呈现为乱码 文件的字符编码需要在传输协
  • 如果满足条件,则将元素与列表中的下一个元素连接

    我正在使用斯坦福自然语言处理将文本分割成句子 但它忽略了收缩 这是我得到的句子的一个例子 List I d like to fix this sentence because it s broken 我的目标是连接缩写词 使结果如下所示 L
  • 如何在sparklyr中按3分钟时间戳聚合数据?

    我在用sparklyr进行一些快速分析 我在使用时间戳时确实遇到一些问题 我有两个不同的数据帧 一个以 1 分钟间隔行 另一个以 3 分钟间隔行 第一个数据集 1 分钟间隔 id timefrom timeto value 10 2017