diff --git a/notes/Hive常用DDL操作.md b/notes/Hive常用DDL操作.md
index fa111aa..d5deb75 100644
--- a/notes/Hive常用DDL操作.md
+++ b/notes/Hive常用DDL操作.md
@@ -1,5 +1,35 @@
# Hive常用DDL操作
+
+
## 一、Database
### 1.1 查看数据列表
@@ -8,7 +38,7 @@
show databases;
```
-
+
### 1.2 使用数据库
@@ -81,7 +111,10 @@ CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name --
... [constraint_specification])] --列名 列数据类型
[COMMENT table_comment] --表描述
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] --分区表分区规则
- [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] --分桶表分桶规则
+ [
+ CLUSTERED BY (col_name, col_name, ...)
+ [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS
+ ] --分桶表分桶规则
[SKEWED BY (col_name, col_name, ...) ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STORED AS DIRECTORIES]
] --指定倾斜列和值
@@ -128,7 +161,7 @@ CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name --
使用 `desc format emp_external`命令可以查看表的详细信息如下:
-
+
### 2.4 分区表
@@ -240,7 +273,7 @@ CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS emp_co LIKE emp
load data local inpath "/usr/file/emp.txt" into table emp;
```
-其中emp.txt的文件内容如下,你可以直接复制粘贴,也可以到本仓库的resources目录下载对应的文件:
+其中emp.txt的内容如下,你可以直接复制使用,也可以到本仓库的resources目录下载:
```txt
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800.00 20
@@ -261,7 +294,7 @@ load data local inpath "/usr/file/emp.txt" into table emp;
加载后可查询表中数据:
-
+
@@ -325,7 +358,7 @@ ALTER TABLE emp_temp ADD COLUMNS (address STRING COMMENT 'home address');
```sql
-- 清空整个表或表指定分区中的数据
-TRUNCATE TABLE table_name [PARTITION (partition_column = partition_col_value, partition_column = partition_col_value, ...)];
+TRUNCATE TABLE table_name [PARTITION (partition_column = partition_col_value, ...)];
```
+ 目前只有内部表才能执行TRUNCATE操作,外部表执行时会抛出异常`Cannot truncate non-managed table XXXX`。
@@ -350,12 +383,6 @@ DROP TABLE [IF EXISTS] table_name [PURGE];
+ 外部表:只会删除表的元数据,不会删除HDFS上的数据;
+ 删除视图引用的表时,不会给出警告(但视图已经无效了,必须由用户删除或重新创建)。
-示例:
-
-```sql
-`DROP TABLE [IF EXISTS] table_name [PURGE]; `
-```
-
## 五、其他命令
@@ -420,3 +447,6 @@ SHOW CREATE TABLE ([db_name.]table_name|view_name);
+## 参考资料
+
+[LanguageManual DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL)
\ No newline at end of file
diff --git a/notes/Hive常用DML操作.md b/notes/Hive常用DML操作.md
index 7f6d039..c5c9bfb 100644
--- a/notes/Hive常用DML操作.md
+++ b/notes/Hive常用DML操作.md
@@ -208,72 +208,77 @@ DELETE FROM tablename [WHERE expression]
### 4.2 示例
-1. 首先需要更改`hive-site.xml`,添加如下配置,开启事务支持,配置完成后需要重启Hive服务。
+**1. 修改配置**
- ```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
-
- ```
+首先需要更改`hive-site.xml`,添加如下配置,开启事务支持,配置完成后需要重启Hive服务。
-2. 创建用于测试的事务表,建表时候指定属性`transactional = true`则代表该表是事务表。需要注意的是,按照[官方文档](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)的说明,目前Hive中的事务表有以下限制:
- + 必须是buckets Table;
- + 仅支持ORC文件格式;
- + 不支持LOAD DATA ...语句。
-
- ```sql
- -- 建表语句
- CREATE TABLE emp_ts(
- empno int,
- ename String
- )
- CLUSTERED BY (empno) INTO 2 BUCKETS STORED AS ORC
- TBLPROPERTIES ("transactional"="true");
- ```
-3. 插入测试数据
-
- ```sql
- INSERT INTO TABLE emp_ts VALUES (1,"ming"),(2,"hong");
- ```
+```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
+
+```
- 插入数据依靠的是MapReduce作业,执行成功后数据如下:
+**2. 创建测试表**
-
-
-4. 测试更新和删除
-
- ```sql
- --更新数据
- UPDATE emp_ts SET ename = "lan" WHERE empno=1;
-
- --删除数据
- DELETE FROM emp_ts WHERE empno=2;
- ```
-
- 更新和删除数据依靠的也是MapReduce作业,执行成功后数据如下:
-
-
+创建用于测试的事务表,建表时候指定属性`transactional = true`则代表该表是事务表。需要注意的是,按照[官方文档](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)的说明,目前Hive中的事务表有以下限制:
+
++ 必须是buckets Table;
++ 仅支持ORC文件格式;
++ 不支持LOAD DATA ...语句。
+
+```sql
+CREATE TABLE emp_ts(
+ empno int,
+ ename String
+)
+CLUSTERED BY (empno) INTO 2 BUCKETS STORED AS ORC
+TBLPROPERTIES ("transactional"="true");
+```
+
+**3. 插入测试数据**
+
+```sql
+INSERT INTO TABLE emp_ts VALUES (1,"ming"),(2,"hong");
+```
+
+插入数据依靠的是MapReduce作业,执行成功后数据如下:
+
+
+
+**4. 测试更新和删除**
+
+```sql
+--更新数据
+UPDATE emp_ts SET ename = "lan" WHERE empno=1;
+
+--删除数据
+DELETE FROM emp_ts WHERE empno=2;
+```
+
+更新和删除数据依靠的也是MapReduce作业,执行成功后数据如下:
+
+
diff --git a/notes/Hive数据查询详解.md b/notes/Hive数据查询详解.md
index 25b7ce5..6f8cc0a 100644
--- a/notes/Hive数据查询详解.md
+++ b/notes/Hive数据查询详解.md
@@ -249,7 +249,7 @@ Hive支持内连接,外连接,左外连接,右外连接,笛卡尔连接
需要特别强调:JOIN语句的关联条件必须用ON指定,不能用WHERE指定,否则就会先做笛卡尔积,再过滤,这会导致你得不到预期的结果(下面的演示会有说明)。
-
+