无法将窗口调用分解为组。错误:org.apache.hadoop.hive.ql.parse

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将窗口调用分解为组。错误:org.apache.hadoop.hive.ql.parse相关的知识,希望对你有一定的参考价值。

我正在尝试从两个表连接两列,以生成一列的唯一id.Max列值,其中包含另一个表的行号。

select (MAX(S.m_id))from MPPO S;
select row_number() OVER(ORDER BY G.a,G.r,G.f1,STG.filler2,G.n_p,G.fe,G.se) 
FROM mmp G
LEFT OUTER JOIN mppo S
ON TRIM(G.pc) = S.pc;

但是将这两个查询结合起来如下:

select (MAX(S.m_id))+ row_number() OVER(ORDER BY G.a,G.r,G.f1,STG.filler2,G.n_p,G.fe,G.se) 
FROM mmp G LEFT OUTER JOIN mppo S
ON TRIM(G.pc) = S.pc;

我收到以下错误:

SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group
must only depend on input columns. Also check for circular dependencies. Underlying error:
org.apache.hadoop.hive.ql.parse.SemanticException

我究竟做错了什么?请帮忙

答案

分别从每个表中选择id然后加入输出:

select concat(t.id,'',t1.id) from (select MAX(S.m_id) as id from MPPO s) t join (
select row_number() OVER(ORDER BY G.a,G.r,G.f1,STG.filler2,G.n_p,G.fe,G.se)  as id
FROM mmp G
LEFT OUTER JOIN mppo S
ON TRIM(G.pc) = S.pc) t1 on 1=1
另一答案

我在Hive中遇到了类似的问题。我希望分享我的经验,以防有人遇到类似的问题

select语句有以下分区子句

COUNT () OVER (PARTITION BY mc.source_well_key, mc.report_dt order by mc.report_dt ) AS r_number

正确的语法是

replace count() with count(1) or count(*)

以上是关于无法将窗口调用分解为组。错误:org.apache.hadoop.hive.ql.parse的主要内容,如果未能解决你的问题,请参考以下文章

Pig 错误:无法找到或加载主类 org.apache.pig.Main

当我将 sdk 更新为 M 时,import org.apache.http.client 无法解析错误

Py4JJavaError:调用 o57.sql 时发生错误。:org.apache.spark.SparkException:作业中止

错误:无法解析 POM org.apache.maven.project

错误: 找不到或无法加载主类 org.apache.jmeter.NewDriver

无法解决这些错误 Java (Pig UDF) 添加库、org.apache