Hive常用命令大全(客观请收藏)

Hive常用命令大全


1.进入hive数据库

hive

2.查看数据库

show databases;

3.进入数据库

use 数据库; 

4.查看所有表

show tables;

5.显示表结构

desc 表名;

6.查询表数据

select * from 表名;

7.显示表分区

show partitions 表名;

8.创建数据库

CREATE SCHEMA userdb;

9.删除数据库

DROP DATABASE IF EXISTS userdb;
DROP SCHEMA userdb;

10.创建数据表

use userdb;
create table xxx;

创建一个表,结构与其他一样

create table xxx like xxx;

创建一个表,结构数据与其他一样,相当于复制一个表

create table xxx as xxx;

创建内部表(指定分割符为tab键)

create table tb_name(name1 int,name2 string) row format delimited fields terminated by '\t';

创建外部表(指定分隔符为tab键)

create external table tb_name(name1 int,name2 string) row format delimited fields terminated by '\t';

创建分区表(分区依据 id int)

create table tb_name(
	id int,
	name string
) partitioned by (Id int) 
	row format delimited fields terminated by '\t';

普通表和分区表区别:有大量数据增加的需要建分区表

内外表转换
内部表转外部表

alter table table-name set TBLPROPROTIES('EXTERNAL'='TURE');

外部表转内部表

alter table table-name set TBLPROPROTIES('EXTERNAL'='FALSE');

删除分区
注意:若是外部表,则还需要删除文件(hadoop fs -rm -r -f hdfspath)

alter table table_name drop if exists partitions (d='2016-07-01');

11.加载数据列表

把本地数据装载到数据表,也就是在metastore上创建信息

load data local inpath '/root/a.txt' into table tb_name;

把HDFS上的数据装载到数据表

load data inpath '/target.txt' into table tb_name;

加载数据到分区表必须指明所属分区

load data local inpath './book.txt' overwrite into table tb_name partition (Id = 10);

12.重命名表名

ALTER TABLE 表名1 RENAME TO 表名2;

13.删除表

drop table 表名;
drop table if exists 表名;

14.插入表数据

向有分区的表插入数据
(1)覆盖现有分区数据,如果没有该指定分区,新建该分区,并且插入数据

INSERT OVERWRITE TABLE 库名.表名 PARTITION(dt='2018-09-12',name='Tom', ...)
SELECT ... FROM 库名.表名 where...

(2)向现有的分区插入数据 (之前的数据不会被覆盖)

INSERT INTO TABLE 库名.表名 PARTITION(dt='2018-09-12',name='Tom',...)
SELECT ... FROM 库名.表名  WHERE ...

向无分区的表插入数据
(1) 覆盖原有表里的数据,命令和有分区的表类似,只是去掉后面的PARTITION(dt=’ ‘,name=’ ')

INSERT OVERWRITE TABLE 库名.表名 
SELECT ... FROM 库名.表名 where...

(2) 向现有的表插入数据 (之前的数据不会被覆盖)

INSERT INTO TABLE 库名.表名 
SELECT ... FROM 库名.表名  WHERE ...

15.表结构修改

增加字段

alter table table_name add columns(newscol1 int conment '新增');

修改字段

alter table table_name change col_name new_col_name new_type;

删除字段
删除字段(COLUMNS中只放保留的字段)

alter table table_name replace columns(col1 int,col2 string,col3string);

16.字段类型

tinyint ,smallint,int,bigint,float,decimal,boolean,string

17.复合数据类型

struct,array,map

18.分桶表

对于每一个表或者分区,Hive可以进一步组织成桶,也就是说桶是更为细精度的数据范围划分。
桶的使用一定要设置如下属性:

hive.enforce.bucketing = true;

创建一个桶:

# 按(id)分为4个bucket 
create table tb_name ( 
	id int, 
	name string 
) clustered by (id) into 4 buckets 
	row format delimited fields terminated by ',';

通过子查询插入数据

insert into tb_name1 select * from tb_name;

19.创建一个视图

create view v_name as 
	select table1.column1, table2.column2, table3.column3 
	where table1.column1 = table2.column2;

总结

以上就是全部关于Hive的操作指令,欢迎学习,共同成长!

### Hive SQL 命令列表及用法教程 Hive 是一种基于 Hadoop 的数据仓库工具,它允许用户使用类似于 SQL 的语法来查询存储在分布式文件系统中的大规模数据集。以下是常用的 Hive SQL 命令及其具体用法: #### 1. 数据库管理 - **创建数据库** ```sql CREATE DATABASE IF NOT EXISTS database_name; ``` 创建一个新的数据库[^2]。 - **切换数据库** ```sql USE database_name; ``` 切换到指定的数据库。 - **查看当前数据库** ```sql SELECT current_database(); ``` - **删除数据库** ```sql DROP DATABASE IF EXISTS database_name CASCADE; ``` 删除数据库并级联删除其中的所有表。 --- #### 2. 表管理 - **创建表** ```sql CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; ``` 定义新表结构,并设置分隔符为制表符 `\t`。 - **外部表** 外部表不会移动原始数据位置。 ```sql CREATE EXTERNAL TABLE external_table_name ( column1 datatype, column2 datatype, ... ) LOCATION '/path/to/data/'; ``` - **分区表** 使用 `PARTITIONED BY` 关键字定义分区列。 ```sql CREATE TABLE partitioned_table_name ( column1 datatype, column2 datatype, ... ) PARTITIONED BY (partition_column datatype); ``` - **动态分区插入** 动态分区可以通过设置参数启用。 ```sql SET hive.exec.dynamic.partition=true; SET hive.exec.dynamic.partition.mode=nonstrict; INSERT INTO TABLE partitioned_table_name PARTITION(partition_column='value') SELECT * FROM source_table WHERE condition; ``` - **删除表** ```sql DROP TABLE IF EXISTS table_name; ``` --- #### 3. 查询操作 - **基本查询** ```sql SELECT column1, column2 FROM table_name WHERE condition LIMIT n; ``` - **聚合函数** 支持常见的聚合函数如 `COUNT`, `SUM`, `AVG`, `MIN`, 和 `MAX`。 ```sql SELECT COUNT(*) AS total_count FROM table_name; ``` - **GROUP BY** 对结果按某一列或多列进行分组。 ```sql SELECT category, SUM(value) AS sum_value FROM table_name GROUP BY category; ``` - **JOIN 操作** 不支持等值连接,推荐使用 `LEFT JOIN`, `RIGHT JOIN`, 或 `INNER JOIN` 替代。 ```sql SELECT t1.column1, t2.column2 FROM table1 t1 LEFT JOIN table2 t2 ON t1.key = t2.key; ``` --- #### 4. 特殊功能 - **复杂数据类型** Hive 提供了多种复杂的字段类型,例如 `STRUCT`, `ARRAY`, 和 `MAP`。 ```sql -- ARRAY 类型 SELECT explode(array_column) FROM table_name; -- MAP 类型 SELECT map_key['key'] FROM table_name; ``` - **内置函数** Hive 包含许多用于字符串处理、日期计算等功能的强大函数。 ```sql -- 字符串拼接 SELECT concat_ws(',', column1, column2) FROM table_name; -- 聚合成数组 SELECT collect_list(column1) FROM table_name; ``` --- #### 5. 配置优化 为了提高性能,可以在执行前调整某些配置项: ```sql SET hive.exec.reducers.bytes.per.reducer=256000000; -- 设置每个 Reducer 的最大输入大小 SET hive.tez.container.size=4096; -- 如果使用 Tez 引擎,则可增加容器内存 ``` --- #### 6. 执行脚本 当需要批量运行多个 HiveQL 命令时,可以将其保存在一个 `.hql` 文件中并通过 CLI 运行: ```bash hive -f script.hql > output_file.log ``` 注意:命令末尾需确保双引号 `"your SQL"`、重定向符号 `>` 及目标文件名在同一行,否则可能导致无法正常生成结果文件[^1]。 --- ### 示例代码 以下是一个完整的 HiveSQL 示例,展示如何加载数据并进行简单分析: ```sql -- 创建表 CREATE TABLE sales_data ( id INT, product STRING, amount DOUBLE ); -- 加载数据 LOAD DATA INPATH '/user/hive/warehouse/sales.csv' INTO TABLE sales_data; -- 计算总销售额 SELECT product, SUM(amount) AS total_sales FROM sales_data GROUP BY product; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值