apache-spark - 查找每小时的广告点击次数
问题描述
我对激发和学习它非常陌生。我遇到了一堵墙,我想在其中找到每小时的点击次数。给定这张表: adclicks_schema
到目前为止,我像这样转换了时间戳:
timestamp_only = adclicks.selectExpr(["to_timestamp(timestamp) as timestamp"])
click_count_by_hour = adclicks.select("timestamp")
click_count_by_hours.show(24)
我被卡住了,接下来我该怎么办?我可以使用任何 spark sql 函数吗?
解决方案
您可以在内置函数中使用小时(或)日期格式hour
从时间戳中提取。
- groupBy
hour
和count
记录数。
Example:
#sample data
df.show()
#+-------------------+
#| timestamp|
#+-------------------+
#|2019-10-01 12:22:34|
#|2019-10-01 13:22:34|
#+-------------------+
from pyspark.sql.functions import *
df.withColumn("hour",hour(col("timestamp"))).\
groupBy("hour").\
agg(count("*").alias("count")).\
show()
#+----+-----+
#|hour|count|
#+----+-----+
#| 12| 1|
#| 13| 1|
#+----+-----+
#using date_format function
df.withColumn("hour",date_format(col("timestamp").cast("timestamp"),"yyyy-MM-dd HH")).\
groupBy("hour").\
agg(count("*").alias("count")).\
show()
#+-------------+-----+
#| hour|count|
#+-------------+-----+
#|2019-10-01 13| 1|
#|2019-10-01 12| 1|
#+-------------+-----+
推荐阅读
- c# - 实体框架:ComplexType 的集合
- asp.net - HTTP 错误 500.19 - 内部服务器错误 无法访问请求的页面
- reactjs - 在另一个 prop reactJS 中使用 prop 值
- gitlab - GitLab 管道中的条件自动重试
- android - phonegap build android => 找不到带有 android 7.0.0 的 apk
- javascript - 将数据从 laravel 传递到刀片视图中的组件
- pg-promise - 批量插入不存在的记录,返回 ID
- html - Angular JS 协助添加值和小数
- c# - 交叉绑定复选框 - isChecked #1 -> isEnabled #2
- c - 我的终端只打印 main 的第一个输出