Spark Sql:从时间戳按小时间隔分区
Posted
技术标签:
【中文标题】Spark Sql:从时间戳按小时间隔分区【英文标题】:Spark Sql : Partition by hour_interval from timestamp 【发布时间】:2019-09-13 05:04:17 【问题描述】:我的数据集(SparkSql)中有 4 个字段,我的目标是从时间戳中提取小时,然后在 spark.sql 查询中按小时间隔进行分区
-
用户名(varchar)
时间戳(长)
ipaddress(varchar)
现在就是这些了,我需要从 longtimestamp 中按 hour_interval 进行分区。
所以我在 mysql 中创建了一个测试表并尝试了下面的命令,它适用于从时间戳获取小时 _interval
SELECT username, originaltime , ipaddress, HOUR(FROM_UNIXTIME(originaltime / 1000)) as hourinterval FROM testmyactivity ;
这给出了以下输出
suresasash3456 1557731954785 1.1.1.1 1 7
现在我需要按这个 hour_interval 进行分区,但我做不到
下面是不工作的查询
SELECT username, ipaddress , HOUR(FROM_UNIXTIME(originaltime / 1000)) as hourinterval, OVER (partition by hourinterval) FROM testmyactivity ;
上面给了我错误信息
在“按小时间隔分区”附近使用的正确语法
预期输出 第1步 : Spark Sql 查询可以从时间戳中提取小时,然后按小时间隔进行分区
Step2:完成上述步骤后,我可以在 hour_interval 上执行 groupByKey,这样我的数据集将平均分配给可用的执行者
【问题讨论】:
请重新表述您的问题,向我们展示清晰的示例输入以及预期的输出。 【参考方案1】:here 是文档。
val partitioned_df = df.partitionBy($"colName")
partitioned_df.explain
现在您可以使用partitioned_df
进行分组查询。
【讨论】:
以上是关于Spark Sql:从时间戳按小时间隔分区的主要内容,如果未能解决你的问题,请参考以下文章
T-SQL DateDiff - 按“整小时前”进行分区,而不是“时间分钟变成 00 以来”
如何在 DBVisualizer 中用 SQL 表示从现在开始向后的 2 小时间隔