apache-spark - 在一周开始日期(星期一)汇总整周

标签 apache-spark pyspark apache-spark-sql

在一周开始日期(星期一)汇总整周。

窗口函数,我们无法在 Spark 中添加一周聚合数据的开始日为星期一。或任何解决办法。

df = spark.createDataFrame([
  ("001", "event1", 10, "2016-05-01 10:50:51"),
  ("002", "event2", 100, "2016-05-02 10:50:53"),
  ("001", "event3", 20, "2016-05-03 10:50:55"),
  ("010", "event3", 20, "2016-05-05 10:50:55"),
  ("001", "event1", 15, "2016-05-01 10:51:50"),
  ("003", "event1", 13, "2016-05-10 10:55:30"),
  ("001", "event2", 12, "2016-05-11 10:57:00"),
  ("001", "event3", 11, "2016-05-21 11:00:01"),
  ("002", "event2", 100, "2016-05-22 10:50:53"),
  ("001", "event3", 20, "2016-05-28 10:50:55"),
  ("001", "event1", 15, "2016-05-30 10:51:50"),
  ("003", "event1", 13, "2016-06-10 10:55:30"),
  ("001", "event2", 12, "2016-06-12 10:57:00"),
  ("001", "event3", 11, "2016-06-14 11:00:01")]).toDF("KEY", "Event_Type", "metric", "Time")

df2 = df.groupBy(window("Time", "7 day")).agg(sum("KEY").alias('aggregate_sum')).select("window.start", "window.end", "aggregate_sum").orderBy("window")

预期输出应该是从周一开始一周的汇总数据。然而 Spark 本身从任意一天开始 7 天的周聚合。

最佳答案

Windows 默认启动时间为 1970 年 1 月 1 日,即星期四。您可以使用

window("Time", "7 day", startTime="4 days")

将其转移到星期一。

关于apache-spark - 在一周开始日期(星期一)汇总整周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56989232/

相关文章:

scala - 如何在 Scala 案例类中转义减号

apache-spark - 在 Spark 数据帧中加载avro时如何合并模式?

pyspark - 将两个不同的 RDD 与两组不同的数据但相同的键组合起来

java - 为什么 Spark 不能在 Eclipse 上运行?

json - SPARK read.json 抛出 java.io.IOException : Too many bytes before newline

apache-spark - 如何将具有 (key1, list(key2, value)) 结构的列表转换为 pyspark 中的数据帧?

apache-spark - 在 Spark 的 saveAsTable 上

scala - 如何使用 Spark DataFrames 和 Cassandra 设置命名策略

scala - 在 Spark 中导入 parquet 文件时出现内存问题

apache-spark - 写入外部 Hive 表时进行 Spark 压缩