【发布时间】:2016-03-19 00:28:12
【问题描述】:
我想使用 Spark-Scala 计算每笔交易的最后一小时的运行总和。我有以下包含三个字段的数据框,并希望计算第四个字段,如下所示:
Customer TimeStamp Tr Last_1Hr_RunningSum
Cust-1 6/1/2015 6:51:55 1 1
Cust-1 6/1/2015 6:58:34 3 4
Cust-1 6/1/2015 7:20:46 3 7
Cust-1 6/1/2015 7:40:45 4 11
Cust-1 6/1/2015 7:55:34 5 15
Cust-1 6/1/2015 8:20:34 0 12
Cust-1 6/1/2015 8:34:34 3 12
Cust-1 6/1/2015 9:35:34 7 7
Cust-1 6/1/2015 9:45:34 3 10
Cust-2 6/1/2015 16:26:34 2 2
Cust-2 6/1/2015 16:35:34 1 3
Cust-2 6/1/2015 17:39:34 3 3
Cust-2 6/1/2015 17:43:34 5 8
Cust-3 6/1/2015 17:17:34 6 6
Cust-3 6/1/2015 17:21:34 4 10
Cust-3 6/1/2015 17:45:34 2 12
Cust-3 6/1/2015 17:56:34 3 15
Cust-3 6/1/2015 18:21:34 4 13
Cust-3 6/1/2015 19:24:34 1 1
我想将“Last_1Hr_RunningSum”计算为新字段,该字段按客户 ID 从每笔交易中回顾一小时并获取一些“Tr”(交易归档)。
- 例如:Cust-1 at 6/1/2015 8:20:34 将回溯到 6/1/2015 7:20:46 并取 (0+5+4+3) = 12 的总和。
- 对于每一行,我想回顾一小时并计算在那一小时内所有交易的总和。
我尝试使用嵌套查询运行 sqlContext.sql,但它给了我错误。 Spark-Scala SQLContext 也不支持窗口函数和分区上的行号。
如何仅使用带有 Spark-Scala 的“TimeStamp”列从“Tr”获取过去一小时的总和。
提前致谢。
【问题讨论】:
-
您应该显示查询并修复示例数据的缩进和格式,以及预期的数据
-
@AlbertoBonsanto 我已经修复了示例数据的缩进和格式。输入表将是前三个字段,预期输出表将带有附加字段“Last_1Hr_RunningSum”。
-
“我尝试使用嵌套查询运行 sqlContext.sql,但它给了我错误”我们是否打算猜测您尝试了什么查询以及您遇到了什么错误?
-
@The Archetypal Paul,不支持 spark sql 中的嵌套查询。
标签: scala apache-spark