HIVE:无法识别“不同”附近的输入。 '('

时间:2016-08-05 17:23:22

标签: hive

我正在尝试在Hive中执行以下查询:

SELECT
  regexp_replace('2016-08-05_11:29:46', '\\_', ' ') as tmstmp,
  distinct(P.name)
FROM table P;

它引发了一个例外,即无法识别“不同”附近的输入。 '('' P'在选择目标中。

当我运行查询时,交换列如:

SELECT
  distinct(P.name),
  regexp_replace('2016-08-05_11:29:46', '\\_', ' ') as tmstmp
FROM table P;

工作正常。关于这个问题的任何想法?

1 个答案:

答案 0 :(得分:3)

据我所知,这是hive在select语法中强加的限制。 根据配置单元语言手册中的Select语法,DISTINCT应先按顺序排列,然后是其他表达式。

参考: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select

我猜DISTINCT的原因是行级操作(即使它被指定为列的函数调用),特别是在hive中它将是mapreduce操作。

在SQL ANSI标准支持的数据库引擎(如Mysql)中也可以观察到类似的行为。