hadoop - 如何删除和更新 Hive 中的记录

标签 hadoop hive sql-delete

我已经安装了 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/

相关文章:

java - 使用java api将数据 append 到hadoop中的文件

hadoop - 在实际运行oozie工作流之前如何检测错误?

hadoop - 使用Sqoop导入时如何使用指定的Hive数据库

mysql - 删除 : You can't specify target table 'table_name' for update in FROM clause

sqlite - 如何删除 SQLite 中的重复项?

python - 在本地测试 mapreduce 流作业的更优雅的方法?

apache-spark - Oozie分解 jar 版本

hive - 删除存储为 orc 的 Hive 表列

hadoop - 缺少 Hive 执行 Jar :/usr/local/hadoop/hive/lib/hive-exec-*. jar

sql - 按 ID 删除数百万行的最佳方法