我的数据集中有4列(user、timestamp、ip、isadmin)。
现在我需要对上面的数据集执行spark sql查询操作。让我们假设数据集变量名为myactivities。
我的spark sql查询应该添加一个名为" event_hour“的新列,该列从小时(时间戳)中提取,然后按event_hour、user分组。
下面是我尝试过的查询
myactivities.createOrReplaceTempView("hourly_sorted_activities");
Dataset<Row> sortedDataset = sparkSession.sql("SELECT Extract(HOUR FROM timestamp) as event_hour_window , user, timestamp, ip, isadmin FROM hourly_sorted_activities GROUP BY event_hour_window, user”);
Dataset<Employee> trimmeddataset = sortedDataset.as(Encoders.bean(Employee.class)我从上面的第2行得到下面的错误。
main ERROR com.x.xclass-在‘FROM’处缺少')‘(第1行,位置20)
== SQL ==
SELECT Extract(HOUR FROM timestamp) as event_hour_window , user, timestamp, ip, isadmin FROM hourly_sorted_activities GROUP BY event_hour_window, user
--------------------^^^
org.apache.spark.sql.catalyst.parser.ParseException:
missing ')' at 'FROM'(line 1, pos 20)
== SQL ==发布于 2019-09-16 23:13:22
我不知道为什么extract不能这样工作,但它对我来说也是失败的。(可能是版本问题?)要从时间戳中提取小时,请使用hour(<ts column)。
val foo = spark.sql(""" select current_timestamp as ts """)
foo.createOrReplaceTempView("fooView")
spark.sql("""select hour(ts) from fooVIew""").show
+--------+
|hour(ts)|
+--------+
| 10|
+--------+https://stackoverflow.com/questions/57958426
复制相似问题