HIVE学习(hive基础)

2023-12-14 11:53:02

一、HIVE简介

  1. 什么是hive?
    HIVE是一种基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能
    本质:SQL转换为MAPREDUCE程序
    主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高
  2. hive与数据库的区别
    ① 查询语句
    HQLSQL
    ② 数据存储
    HDFS // RAW DEVICE OR LOCAL FS
    ③ 执行器
    MAPREDUCE / EXECUTOR
    ④ 数据插入
    支持批量导入与单挑插入//支持单条或批量导入
    ⑤ 数据操作
    覆盖追加//行级更新删除
    ⑥数据规模
    大/小
    ⑦执行延迟
    高/低
    3.HIVE不支持数据更新与删除是因为hive存储在HDFS中,删除为物理删除,代价较高,只支持覆盖和追加
  3. hive扩展性好是因为可以在多个集群的服务器上做应用开发
  4. hive的读时模块快,是指hive加载数据到表中时不会做数据校验,在读取数据时才校验,它的查询延迟主要浪费在资源调度上,进行任务划分然后进行计算任务的申请

二、hive的数据类型

1、基本数据类型

booleantrue/falsetrue
tinyint1字节的有符号整数1
smallint2字节的有符号整数1
int4字节的有符号整数1
bigint8字节的有符号整数1
float4字节单精度浮点数1.0
double8字节单精度浮点数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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。