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)