首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark Sql查询

Spark Sql查询
EN

Stack Overflow用户
提问于 2019-09-16 21:57:05
回答 1查看 132关注 0票数 0

我的数据集中有4列(user、timestamp、ip、isadmin)。

现在我需要对上面的数据集执行spark sql查询操作。让我们假设数据集变量名为myactivities。

我的spark sql查询应该添加一个名为" event_hour“的新列,该列从小时(时间戳)中提取,然后按event_hour、user分组。

下面是我尝试过的查询

代码语言:javascript
复制
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)

代码语言:javascript
复制
== 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 ==
EN

回答 1

Stack Overflow用户

发布于 2019-09-16 23:13:22

我不知道为什么extract不能这样工作,但它对我来说也是失败的。(可能是版本问题?)要从时间戳中提取小时,请使用hour(<ts column)

代码语言:javascript
复制
val foo = spark.sql(""" select current_timestamp as ts """)
foo.createOrReplaceTempView("fooView")
spark.sql("""select hour(ts) from fooVIew""").show
+--------+
|hour(ts)|
+--------+
|      10|
+--------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57958426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档