markdown Hive常用命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Hive常用命令相关的知识,希望对你有一定的参考价值。

## DML
### load data local inpath
```
load data local inpath '/root/tmp' into table tmp;
load data local inpath '/root/tmp' overwrite into table tmp;
```

### left semi-join 左半开连接
```sql
select a.col1, a.col2 from a left semi join b where a.col1=b.col1 and a.col3=b.col3
```
根据b表中on从句的条件来筛选a表中的记录,等同于传统数据库的
`select a.col1, a.col2 from a where a.col1, a.col3 in (select b.col1, b.col3 from b)`  
注意:select和where从句中不能有b表的列  
hive不支持right semi-join

## 函数
### 计算年月
```
select date_format('2018-01-31','yyyyMM');
201801
```

## 其他
### 以tez启动
```
hive --hiveconf hive.execution.engine=tez
```
### 获取当前会话的用户
```
select current_user()
```

## 表
### 查看表的元信息
```
desc formatted table_name;
```
### 显示建表语句
```
show create table tablename;
```


## 分区
### 查看分区
```
show partitions table_name [partition(part1='xxxx',...)];
```
### 删除分区
```
alter table table_name drop partition(ds='xxx');
```
### 修复表的分区元信息(对于分区地址不在表地址里面的无效,需要手动指定)
```
MSCK REPAIR TABLE t2;
```
### 手动添加分区
```
ALTER TABLE tablename ADD IF NOT EXISTS PARTITION (xxx='xxx') location '$hdfs_path';
```

## 配置
### 将Hive MR提交在本地(非YARN)
```
set hive.exec.mode.local.auto=true;
set hive.exec.mode.local.auto.input.files.max=100;
```

### map-join
```sql
# 默认已经是true
set hive.auto.convert.join=true;
# 定义多少的数量可以被认为是小表
set hive.mapjoin.smalltable.filesize=25000000
```

以上是关于markdown Hive常用命令的主要内容,如果未能解决你的问题,请参考以下文章

Hive常用命令

Hive常用命令

Hive概述及常用命令

hive常规配置及常用命令使用

Hive常用命令

hive常用命令