Hive DDL&DML

1.删除分区

ALTER TABLE table_name DROP IF EXISTS PARTITION(dt='20180101')

如果是删除多个分区,用逗号分隔:partition(dt='10'), partition(dt='11'),partition(dt='13')

如果是外部表,记得rm对应文件

2.添加分区

ALTER TABLE table_name ADD IF NOT EXISTS PARTITION(dt='20180101')

添加多个分区用逗号分隔,partition关键字不能少

挂载目录到一个新的分区

alter table table_name add partition(分区字段名=分区数据值) location '路径';   

 修改分区location

alter table table_name add partition(分区字段名=分区数据值) set location '路径';

3.删除表

DROP TABLE table_name

如果是外部表,记得rm对应文件

 4.添加字段

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)

注意:新添加的字段只能添加在最后一个非分区字段的后面

如果想把字段添加在指定字段后面,可以在添加完字段后,使用下面的修改字段命令调整字段的顺序。

5.修改字段

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]

 6.加载文件数据到数据表中

LOAD DATA [LOCAL] INPATH 'path/file_name' [OVERWRITE] INTO TABLE table_name [PARTITION (partcol1=val1, partcol2=val2 ...)]

 local 表示从本地文件系统加载数据文件(cp操作,即把本地文件copy到hdfs上),默认从HDFS上加载(mv操作,完成后原文件不保留)

7.查询结果写入到文件系统

INSERT OVERWRITE [LOCAL] DIRECTORY directory1
  [ROW FORMAT row_format] [STORED AS file_format] 
  SELECT ... FROM ...

默认用^A分隔列

其他:

show databases;

use database_name;

show tables [in database_name];

show partitions table_name;

show create table [database_name.]table_name;

show functions;

desc database database_name;

desc [formatted] table_name

desc function fun_name;

desc function extended fun_name;

truncate table table_name;

drop table_name;

注1:

分区其实就是HDFS上表目录的子目录

bucket就是表目录下的具体文件

注2:

 version 0.13.0:

如果字段都是null,则sum后为null

如果字段都是null,count([distinct])结果为0

注3:

hive -e "select * from table_name limit 10"

hive -f file_name  执行file_name中的hivesql

注4:

hive-site.xml: Hive的主要配置文件

hivemetastore-site.xml: 元数据的配置文件

hiveserver2-site.xml: HiveServer2的配置文件

配置优先级(低->高):hive-site.xml -> hivemetastore-site.xml -> hiveserver2-site.xml -> -- hiveconf -> set

原文地址:https://www.cnblogs.com/vdvvdd/p/9509960.html