我已经安装了 Hadoop、Hive、Hive JDBC。这对我来说运行良好。但我仍然有问题。如何使用 Hive 删除或更新单个记录,因为 MySQL 的删除或更新命令在 Hive 中不起作用。
谢谢
hive> delete from student where id=1;
Usage: delete [FILE|JAR|ARCHIVE] <value> [<value>]*
Query returned non-zero code: 1, cause: null
最佳答案
从 Hive 版本 0.14.0 开始:INSERT...VALUES、UPDATE 和 DELETE 现在可以使用完整的 ACID 支持。
插入 ... 值语法:
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]
其中 values_row 是: (值 [, 值 ...] ) 其中一个值为 null 或任何有效的 SQL 文字
更新语法:
UPDATE tablename SET column = value [, column = value ...] [WHERE expression]
删除语法:
DELETE FROM tablename [WHERE expression]
此外,来自 Hive Transactions 文档:
If a table is to be used in ACID writes (insert, update, delete) then the table property "transactional" must be set on that table, starting with Hive 0.14.0. Without this value, inserts will be done in the old style; updates and deletes will be prohibited.
Hive DML 引用:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML
hive 事务引用:
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions
关于hadoop - 如何删除和更新 Hive 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810537/