用于spark sql的窗口函数在线文档包括以下示例:
https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html
SELECT
product,
category,
revenue
FROM (
SELECT
product,
category,
revenue,
dense_rank() OVER (PARTITION BY category ORDER BY revenue DESC) as rank
FROM productRevenue) tmp
WHERE
rank <= 2
我已经创建了类似于sql的结构。但它不起作用
select id,r from (
select id, name,
rank() over (partition by name order by name) as r
from tt) v
where v.r >= 7 and v.r <= 12
这是错误:
Exception in thread "main" java.lang.RuntimeException: [3.25]
failure: ``)'' expected but `(' found
rank() over (partition by fp order by fp) as myrank
^
任何人都可以看到他们在结构上的不同之处?我从2015年11月18日开始上火星1.6.0-SNAPSHOT。
答案 0 :(得分:3)
我查看了源代码,看来rank()需要 hive 支持。我正在用
重建火花 -Phive -Phive-thriftserver
我确认:使用HiveContext
时,查询有效。