0

我的数据集(SparkSql)中有 4 个字段,我的目标是从时间戳中提取小时,然后在 spark.sql 查询中按小时间隔进行分区

  1. 用户名(varchar)
  2. 时间戳(长)
  3. 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 以便我的数据集将平均分配给可用的执行程序

4

1 回答 1

0

是文档。

val partitioned_df = df.partitionBy($"colName")
partitioned_df.explain

现在您可以partitioned_df用于分组查询。

于 2019-09-16T04:51:49.257 回答