From aaff08d791132148b7e9ff7be61c44baf1a8ace4 Mon Sep 17 00:00:00 2001 From: heibaiying <31504331+heibaiying@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:24:22 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Hive=E5=B8=B8=E7=94=A8DML=E6=93=8D?= =?UTF-8?q?=E4=BD=9C.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Hive常用DML操作.md | 63 ++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/notes/Hive常用DML操作.md b/notes/Hive常用DML操作.md index 7f6d039..61982f1 100644 --- a/notes/Hive常用DML操作.md +++ b/notes/Hive常用DML操作.md @@ -75,11 +75,11 @@ LOAD DATA INPATH "hdfs://hadoop001:8020/mydir/emp.txt" OVERWRITE INTO TABLE emp ### 2.1 语法 ```sql -INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) - [IF NOT EXISTS]] select_statement1 FROM from_statement; +INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] +select_statement1 FROM from_statement; INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] - select_statement1 FROM from_statement; +select_statement1 FROM from_statement; ``` + Hive 0.13.0开始,建表时可以通过使用TBLPROPERTIES(“immutable”=“true”)来创建不可变表(immutable table) ,如果不可以变表中存在数据,则INSERT INTO失败。(注:INSERT OVERWRITE的语句不受`immutable`属性的影响); @@ -210,40 +210,39 @@ DELETE FROM tablename [WHERE expression] 1. 首先需要更改`hive-site.xml`,添加如下配置,开启事务支持,配置完成后需要重启Hive服务。 - ```xml - - hive.support.concurrency - true - - - hive.enforce.bucketing - true - - - hive.exec.dynamic.partition.mode - nonstrict - - - hive.txn.manager - org.apache.hadoop.hive.ql.lockmgr.DbTxnManager - - - hive.compactor.initiator.on - true - - - hive.in.test - true - - ``` + ```xml + + hive.support.concurrency + true + + + hive.enforce.bucketing + true + + + hive.exec.dynamic.partition.mode + nonstrict + + + hive.txn.manager + org.apache.hadoop.hive.ql.lockmgr.DbTxnManager + + + hive.compactor.initiator.on + true + + + hive.in.test + true + + ``` 2. 创建用于测试的事务表,建表时候指定属性`transactional = true`则代表该表是事务表。需要注意的是,按照[官方文档](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)的说明,目前Hive中的事务表有以下限制: + 必须是buckets Table; + 仅支持ORC文件格式; - + 不支持LOAD DATA ...语句。 + + 不支持LOAD DATA ...语句。 ```sql - -- 建表语句 CREATE TABLE emp_ts( empno int, ename String @@ -327,4 +326,4 @@ SELECT * FROM emp_ptn; ## 参考资料 1. [Hive Transactions](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions) -2. [Hive Data Manipulation Language](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML) \ No newline at end of file +2. [Hive Data Manipulation Language](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML)