我有一个带有查找表数据的DataFrame,每个小时都有一个表中的条目。我如何计算直到当前小时的记录总数?如何从查找表中获取到当前小时的记录总数
例如我的DF数据
+----+-----+
|hour|count|
+----+-----+
|0.00| 10|
|1.00| 5|
|2.00| 10|
|3.00| 15|
|4.00| 10|
|5.00| 10|
+----+-----+
如果我通过 “4.00” 作为输入,它应该返回的总数到第4小时。
预期成果是:
Total count
50
示例代码我想:
val df = Seq(("0.00", "10"),
("1.00", "15")).toDF("hour", "reccount")
df.show
df.printSchema
df.registerTempTable("erv")
//sqlContext.sql("select hour,reccount from erv").show
sqlContext.sql("select sum(reccount) over(partition by hour) as running_total from erv").show
但我提示以下错误。
异常在线程 “主” 了java.lang.RuntimeException:[1.26]失败: ``工会 '' 预期但`(”发现
SELECT SUM(RECCOUNT)以上(按小时分区)从ERV
running_total我也尝试了窗口功能,如低于,但其预计HiveContext需要创建,当我尝试创建HiveContext本地公司没有创造HiveContext。
窗函数代码:
val wSpec = Window.partitionBy("hour").orderBy("hour").rowsBetween(Long.MinValue, 0)
df.withColumn("cumSum", sum(df("reccount")).over(wSpec)).show()
@TzachZohar:我更新的代码, 请看一看。 – Shankar
@Shankar:上面的方法你已经使用了,这个查询怎么样..'选择总和(reccount)从erv小时<= 4' –
@RamPrasadG:谢谢,这个工作.. – Shankar