使用Join in Hive更新查询

时间:2015-10-29 07:14:20

标签: hadoop hive

我正在尝试执行以下操作:

UPDATE a
SET col1 = B.col1,
col3= B.col4
FROM table A 
JOIN table B on a.col2=b.col2
WHERE A.col5 = B.col5;

但是,这会引发以下错误:

编译语句时出错:FAILED-ParseException-'col4'附近的'from'缺少EOF

我尝试重新排列set和from子句,但无法执行查询。 ParseExceptions一次又一次地出现。 我的表类型,coloumn数据类型都是相同的。在桌面上运行静态更新非常合适。

有什么方法可以在hive中使用join来运行更新?请帮忙。

1 个答案:

答案 0 :(得分:3)

Hive并不支持。您只能使用以下结构:

UPDATE a SET col1 =..., col3=... WHERE ...

但是,您有两个更新表的选项:

  1. 子查询

    UPDATE a SET col1 =..., col3=... WHERE col2 in (SELECT ...)
    

    不是你的情况

  2. 插入覆盖

    INSERT OVERWRITE TABLE a SELECT B.col1, col2, A.col3, ...
    

    小心!它会覆盖旧表,如果查询错误,您可能会丢失或损坏数据。在执行实际数据之前测试两次。