我有一個帶有查找表數據的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