首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SparkR窗口函数

SparkR窗口函数
EN

Stack Overflow用户
提问于 2016-01-19 20:06:23
回答 1查看 1.3K关注 0票数 1

我从JIRA中发现,SparkR的1.6个版本已经实现了包括lagrank在内的窗口函数,但over函数尚未实现。如何使用像lag函数那样的窗口函数而不使用SparkR中的over (而不是SparkSQL方式)?有人能举个例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 06:03:04

星火2.0.0+

SparkR为DSL包装器提供了overwindow.partitionBy / partitionBywindow.orderBy / orderByrowsBetween / rangeBeteen函数。

火花<= 1.6

不幸的是,在1.6.0中是不可能的。虽然一些窗口函数(包括lag )已经实现,但SparkR还不支持窗口定义,这使得这些定义完全无用。

只要火花-11395未被解析,唯一的选择就是使用原始SQL:

代码语言:javascript
复制
set.seed(1)

hc <- sparkRHive.init(sc)
sdf <- createDataFrame(hc, data.frame(x=1:12, y=1:3, z=rnorm(12)))
registerTempTable(sdf, "sdf")

sql(hc, "SELECT x, y, z, LAG(z) OVER (PARTITION BY y ORDER BY x) FROM sdf") %>% 
  head()

##    x y          z        _c3
## 1  1 1 -0.6264538         NA
## 2  4 1  1.5952808 -0.6264538
## 3  7 1  0.4874291  1.5952808
## 4 10 1 -0.3053884  0.4874291
## 5  2 2  0.1836433         NA
## 6  5 2  0.3295078  0.1836433

假设对应PR将在没有重大更改的情况下合并,窗口定义和示例查询应该如下所示:

代码语言:javascript
复制
w <- Window.partitionBy("y") %>% orderBy("x")
select(sdf, over(lag(sdf$z), w))
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34885981

复制
相关文章

相似问题

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