从蜂巢中删除表不起作用

时间:2016-06-28 10:57:33

标签: hadoop hive

我想删除表A中的行,其中列c大于表B的列c的最大值

我试过

delete * from A
where A.p >= (select max(t.c) from B t)

但它不起作用。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

INSERT ... VALUES,UPDATE和DELETE语句在hive-site.xml配置文件中需要以下属性值:

hive.enforce.bucketing               true

hive.exec.dynamic.partition.mode    nonstrict

在相应的hive-site.xml中更新配置后,重新启动服务 - HiveServer2和Hive Metastore。

然后,使用这个hql

delete from A
where A.p >= (select max(t.c) from B t)

答案 1 :(得分:1)

这里有几个问题:

  1. DELETE support本身仅从Hive 0.14开始提供。
  2. DELETE语法不应包含星号(“*”)。请参阅官方Hive Delete syntax

  3. 正如MysticForce正确指出的那样,where子句中的子查询仅支持IN,NOT IN,EXISTS,NOT EXISTS语句。请参阅Subqueries syntax in manual