HIVE学习(hive基础)
2023-12-14 11:53:02
HIVE基础介绍
一、HIVE简介
- 什么是hive?
HIVE是一种基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能
本质:SQL转换为MAPREDUCE程序
主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高 - hive与数据库的区别
① 查询语句
HQLSQL
② 数据存储
HDFS // RAW DEVICE OR LOCAL FS
③ 执行器
MAPREDUCE / EXECUTOR
④ 数据插入
支持批量导入与单挑插入//支持单条或批量导入
⑤ 数据操作
覆盖追加//行级更新删除
⑥数据规模
大/小
⑦执行延迟
高/低
3.HIVE不支持数据更新与删除是因为hive存储在HDFS中,删除为物理删除,代价较高,只支持覆盖和追加 - hive扩展性好是因为可以在多个集群的服务器上做应用开发
- hive的读时模块快,是指hive加载数据到表中时不会做数据校验,在读取数据时才校验,它的查询延迟主要浪费在资源调度上,进行任务划分然后进行计算任务的申请
二、hive的数据类型
1、基本数据类型
boolean | true/false | true |
---|---|---|
tinyint | 1字节的有符号整数 | 1 |
smallint | 2字节的有符号整数 | 1 |
int | 4字节的有符号整数 | 1 |
bigint | 8字节的有符号整数 | 1 |
float | 4字节单精度浮点数 | 1.0 |
double | 8字节单精度浮点数 | 1.0 |
string | 字符串 | “abc” |
varchar | 字符串 | “abc” |
timestamp | 时间戳 | 1563157873 |
date | 日期 | 20190715 |
2、复合数据类型
类型名称 | 描述 | 举例 |
---|---|---|
array | 字段类型相同的有序字段 | array(1,2,3) |
map | 无序的键值对map(k1,v2,k2,v2) | map(‘a’,‘1’,‘b’,‘2’) |
struct | 一组命名的字段,字段类型可以不同struct(元素1,元素2) | struct(‘a’,1,2,0) |
select map_key(''),map_values('') from user;
create table complex(
col1 array<int>,
col2 map<string,int>,
col3 struct<a:string,b:int,c:int>
)
三、HIVE的DDL操作
show database;
show database like 'db_hive*';
# 显示数据库详细信息
desc database extended db_hive;
# 切换当前数据库
use db_hive;
# 删除数据库
drop database if exists db_hive;
# 强制删除
drop database if exists bd_hive cascade;
四、创建一个表
1. 建表语句
create(external) table (if not exists) table_name(
col_name data_type comment "中文名"
)
row format delimited fields terminated by'\t'[指定每一行中字段的分隔符]
stored as orc[指定存储文件类型(sequencefile 二进制序列文件、textfile 文本、rcfile 列式存储格式文件,不指定就默认为文本文件]
(1)查询建表法
通过AS语句,将查询的子结果存在新表里
create table if not exists student1 as select;
like建表法
create table if not exists student2 like select;
(2)分区表的创建
一级分区
create table student_partition1(
id int,
name string,
age int
)
partitioned by (dt string)
row format delimited fields terminated by '\t';
二级分区
create table student_partition1(
id int,
name string,
age int
)
partitioned by (dt string,day string)
row format delimited fields terminated by '\t';
五、修改表结构
1.修改表名
alter tablestudent——partition1 rename to student—p1
2. 列修改或增加
增加列
alter table student add columns(字段名,字段类型)
修改列
alter table student change columns 字段名 更改的类型;
替换列
alter table student replace columns(deptno string,dname string,loc string)
替换表中所有有字段
3. 修改分区
# 添加单个分区
alter table student add partition(dt='20230402');
# 添加多个分区
alter table student add partition(dt='20230402',dt='20230402');
# 删除分区
alter table student drop partition (dt= '20200401')
五、常见函数
六、一对一关联
left join左关联
将左边的表A作为主表,以A表为外循环对右表进行匹配,如果右表没有匹配,就将右表项值为空
right join 右关联
内连接
选择两个表同时出现的项
全连接
选择所有出现的项
查询只有A表的数据
select * from A
left join B A.ID=B.ID
WHERE B.ID =NULL
文章来源:https://blog.csdn.net/qq_46126118/article/details/134898884
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!