我正在尝试执行以下操作:
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来运行更新?请帮忙。
答案 0 :(得分:3)
Hive并不支持。您只能使用以下结构:
UPDATE a SET col1 =..., col3=... WHERE ...
但是,您有两个更新表的选项:
子查询
UPDATE a SET col1 =..., col3=... WHERE col2 in (SELECT ...)
不是你的情况
插入覆盖
INSERT OVERWRITE TABLE a SELECT B.col1, col2, A.col3, ...
小心!它会覆盖旧表,如果查询错误,您可能会丢失或损坏数据。在执行实际数据之前测试两次。