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:从时间戳按小时间隔分区的主要内容,如果未能解决你的问题,请参考以下文章

根据 Spark 中的小时数拆分时间戳间隔

按时间戳或年,月,日,小时分区更好吗

T-SQL DateDiff - 按“整小时前”进行分区,而不是“时间分钟变成 00 以来”

如何在 DBVisualizer 中用 SQL 表示从现在开始向后的 2 小时间隔

Presto SQL / Athena:如何从“间隔天到秒”只返回小时、分钟和秒

无法从 spark sql 插入配置单元分区表