hive-2(hive基本操作)

基本概念

什么是Hive?

  • 将结构化的数据文件映射为数据库表
  • 提供类SQL的查询语言HQL(Hive Query Language)操作Mapreduce
  • 适用于离线的数据分析

数据仓库和传统数据库的区别

区别项数据仓库数据库
查询语言HQLSQL
数据存储位置HDFSRaw Device/LocalFS
数据格式用户定义系统定义
数据更新不支持支持
索引
执行方式MapreduceExecutor
执行延迟
可拓展性
数据规模

可以看出,数据仓库Hive和传统数据库Mysql除查询语言类似外,其余各方面几乎都不相同

两种工具

Hive有两种操作界面

CLI

进入方式很简单,执行hive命令进入后默认模式
由于该模式命令与mysql基本一致,常用该模式操作Hive

Beeline

需要先开启hiveserver2服务,执行命令hiveserver2 start
新开窗口,执行命令beeline -u jdbc:hive2://IP地址:10000,进入beeline模式
输入show databases; 可以看到正确输出了结果
在这里插入图片描述

基本命令

执行hive命令进入命令行模式时,可以附带选项:

  • -e:再附带一条HQL指令,可以直接执行这条命令,适用于批量操作使用;
  • -f:再附带一个文件路径,可以依次执行指定文件中的所有HQL指令

DDL操作指令

操作数据库

# 显示全部数据库
show databases;
# 创建数据库
create database db_name;
# 创建数据库时指定信息
create database db_name with dbproperties('owner'='myhive','date'='20210321');
# 显示数据库信息
describe database extended db_name;
# 修改数据库信息
alter database db_name set dbproperties ('owner'='newhive');
# 删除数据库,与mysql不同的是,数据库下有表时删除会报错,要先清空数据库
drop database db_name;

操作表格
完整建表语句

create [external] table [if not exists] table_name (
col_name data_type [comment '字段描述信息']
col_name data_type [comment '字段描述信息'])
[comment '表的描述信息']
[partitioned by (col_name data_type,...)]
[claustered by (col_name,col_name,...)]
[sorted by (col_name [asc|desc],...) into num_buckets buckets]
[row format row_format]
[storted as ...]
[location '指定表的路径']

说明:

  1. external:标注了就是创建外部表,否则是内部表
  2. comment:表示注释,默认不可以使用中文(乱码)
  3. partitioned by:表示分区,这里的分区是目录,和mapreduce的分区不同
  4. clustered by :对每个一表分文件,Hive可以进一步组织成桶,也就是说桶式更细粒度的数据范围划分。Hive也是针对某一列进行桶的组织
  5. sorted by:排序
  6. storted as :指定表格的存储格式。常用格式:SEQUENCEFILETEXTFILE,RCFILE
  7. row format:指定表文件字段分隔符
  8. location:指定表文件的存储路径
# 根据已有表格结构创建新表格
create table newTab_name like oldTab_name;
# 查询表格详细信息,有formatted关键字信息更详细
desc [formatted] student;
# 向表格中加载数据,该命令默认追加数据
load data local inpath 'file_path' into table tab_name;
# 加载数据,并覆盖
load data local inpath 'file_path' overwrite into table tab_name;
# 从hdfs文件系统加载数据,这个操作是剪切操作,hdfs原本的文件会被移动到hive文件目录中
load data inpath 'hdfs_path' into table tab_name;
# 删除表格
drop table tab_name;

内部表和外部表区别

内部表外部表
未被external修饰被external修饰
由HIVE自身管理由外部HDFS管理
存储在指定的warehouse中存储位置用户自定
删除时会同时删除元数据和表数据删除时仅删除HIVE中该表的元数据
修改数据会同时修改源数据需要修改【MSCK REPAIR TABLE table_name】
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接着上一篇文章,我们来继续学习Hive基本查询操作。 1. 分组查询 分组查询是指将表中的数据按照某个字段进行分组,然后对每个组进行计算,例如求和、计数、平均值等。语法如下: ``` SELECT column_name, aggregate_function(column_name) FROM table_name GROUP BY column_name; ``` 其中,aggregate_function可以是COUNT、SUM、AVG等聚合函数。 例如,我们有一个学生表student,包含学生姓名和年龄两个字段,需要按照年龄进行分组,并统计每个年龄段的人数,可以使用如下语句: ``` SELECT age, COUNT(*) as count FROM student GROUP BY age; ``` 2. 排序查询 排序查询是指将表中的数据按照某个字段进行排序,可以是升序或降序。语法如下: ``` SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC|DESC; ``` 其中,ASC表示升序,DESC表示降序。 例如,我们需要按照学生的年龄进行降序排列,可以使用如下语句: ``` SELECT name, age FROM student ORDER BY age DESC; ``` 3. 连接查询 连接查询是指将两个或多个表中的数据按照某个字段进行连接,形成一个新的表。语法如下: ``` SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name; ``` 其中,JOIN表示连接操作,ON后面是连接的条件。 例如,我们有两个表student和score,需要按照学生姓名将这两个表连接起来,查询每个学生的成绩,可以使用如下语句: ``` SELECT name, score FROM student JOIN score ON student.id=score.id; ``` 以上就是Hive基本查询操作的介绍,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值