【发布时间】:2017-08-19 07:32:47
【问题描述】:
我正在尝试使用 SparkR 和 Spark 2.1.0 按小时汇总一些日期。 我的数据如下:
created_at
1 Sun Jul 31 22:25:01 +0000 2016
2 Sun Jul 31 22:25:01 +0000 2016
3 Fri Jun 03 10:16:57 +0000 2016
4 Mon May 30 19:23:55 +0000 2016
5 Sat Jun 11 21:00:07 +0000 2016
6 Tue Jul 12 16:31:46 +0000 2016
7 Sun May 29 19:12:26 +0000 2016
8 Sat Aug 06 11:04:29 +0000 2016
9 Sat Aug 06 11:04:29 +0000 2016
10 Sat Aug 06 11:04:29 +0000 2016
我希望输出是:
Hour Count
22 2
10 1
19 1
11 3
....
我试过了:
sumdf <- summarize(groupBy(df, df$created_at), count = n(df$created_at))
head(select(sumdf, "created_at", "count"),10)
但分组到最接近的秒数:
created_at count
1 Sun Jun 12 10:24:54 +0000 2016 1
2 Tue Aug 09 14:12:35 +0000 2016 2
3 Fri Jul 29 19:22:03 +0000 2016 2
4 Mon Jul 25 21:05:05 +0000 2016 2
我试过了:
sumdf <- summarize(groupBy(df, hr=hour(df$created_at)), count = n(hour(df$created_at)))
head(select(sumdf, "hour(created_at)", "count"),20)
但这给出了:
hour(created_at) count
1 NA 0
我试过了:
sumdf <- summarize(groupBy(df, df$created_at), count = n(hour(df$created_at)))
head(select(sumdf, "created_at", "count"),10)
但这给出了:
created_at count
1 Sun Jun 12 10:24:54 +0000 2016 0
2 Tue Aug 09 14:12:35 +0000 2016 0
3 Fri Jul 29 19:22:03 +0000 2016 0
4 Mon Jul 25 21:05:05 +0000 2016 0
...
如何使用小时功能来实现这一点,或者有更好的方法吗?
【问题讨论】:
-
您应该尝试将您的
created_at列拆分为hour值,然后在hour列上使用groupBy。
标签: r apache-spark sparkr