Hive基本使用
作者:互联网
一、Hive基本使用
(一) DDL操作
1. 数据库相关
(1) 创建数据库
create database tm;
create database if not exists tm;
(2) 切换数据库
use tm;
(3) 查看数据库信息
-- 查看数据库信息
desc database tm;
-- 显示数据库详细信息(可以查看数据库属性信息)
desc database extended tm;
(4) 修改数据库信息
-- 修改数据库(属性信息)
alter database tm set dbproperties('create_time'='20210506');
(5) 修改数据库信息
-- 删除空数据库
drop database tm;
drop database if exists tm;
-- 删除非空数据库
drop database tm cascade;
2. 数据表基本操作
前提:解决“中文注释”乱码
-- ########### 解决 “建表时” 中文注释是乱码 ################
-- 在mysql中 hive元数据库中执行 以下 SQL,
-- 只有新建表的注释才会是中文,之前表的注释无法变为中文
-- 修改表字段注解和表注解
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
-- 修改分区字段注解
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
-- 修改索引注解
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
(1) 创建内部表
-- 创建“内部表” (管理表)
-- 指定 字段分隔符
-- 指定 行分隔符
-- 指定 表属性信息
create table if not exists tm_data(
id bigint comment '自增ID',
ann_num int comment '公告期号',
ann_date date comment '公告日期',
ann_id int comment '公告类型id',
ann_type_code string comment '公告类型代码',
ann_type string comment '公告类型',
ncl_code smallint comment '国际分类号',
reg_number string comment '注册号',
reg_name string comment '申请人',
tm_name string comment '商标名称',
pic_url string comment '图片链接',
page_no int comment '页码',
down_path string comment '下载地址',
data_index string comment '数据库位置索引',
add_time date comment '新增时间',
mod_time date comment '修改时间',
info_id string comment '公告id'
)
comment '公告数据列表'
row format delimited fields terminated by '\t'
lines terminated by '\n';
TBLPROPERTIES ('creator'='yzy', 'crate_time'='2021-05-08');
(2) 创建外部表
-- 创建“外部表”
create external table if not exists tm_data(
id bigint comment '自增ID',
ann_num int comment '公告期号',
ann_date date comment '公告日期',
ann_id int comment '公告类型id',
ann_type_code string comment '公告类型代码',
ann_type string comment '公告类型',
ncl_code smallint comment '国际分类号',
reg_number string comment '注册号',
reg_name string comment '申请人',
tm_name string comment '商标名称',
pic_url string comment '图片链接',
page_no int comment '页码',
down_path string comment '下载地址',
data_index string comment '数据库位置索引',
add_time date comment '新增时间',
mod_time date comment '修改时间',
info_id string comment '公告id'
)
comment '公告数据列表'
row format delimited fields terminated by '\t'
lines terminated by '\n';
TBLPROPERTIES ('creator'='yzy', 'crate_time'='2021-05-08');
(3) 更改内【外】部表
-- 将 内部表 改为外部表
alter table tm_data set tblproperties('EXTERNAL'='TURE');
-- 将 外部表 改为内部表
alter table tm_data set tblproperties('EXTERNAL'='FALSE');
(4) 创建分区表
-- 创建 “分区表”
-- 注意:分区字段不能存在于表字段中
create table if not exists tm_data_partition(
id bigint comment '自增ID',
-- ann_num int comment '公告期号',
ann_date date comment '公告日期',
ann_id int comment '公告类型id',
ann_type_code string comment '公告类型代码',
ann_type string comment '公告类型',
ncl_code smallint comment '国际分类号',
reg_number string comment '注册号',
reg_name string comment '申请人',
tm_name string comment '商标名称',
pic_url string comment '图片链接',
page_no int comment '页码',
down_path string comment '下载地址',
data_index string comment '数据库位置索引',
add_time date comment '新增时间',
mod_time date comment '修改时间',
info_id string comment '公告id'
)
comment '公告数据列表'
partitioned by (ann_num int comment '公告期号')
row format delimited fields terminated by '\t'
TBLPROPERTIES ('creator'='yzy', 'crate_time'='2021-05-07');
(5) 操作分区
-- 分区字段可以作为表的普通字段进行查询
select * from tm_data where ann_num=1234;
-- 查看分区信息
show partitions tm_data;
-- 增加分区
aler table tm_data add [if not exist] partition(ann_num=1234,ann_type_code='TMZCSQ')
-- 删除分区
aler table tm_data drop [if exist] partition(ann_num=1234,ann_type_code='TMZCSQ')
(6) 查看表信息
-- 查看表字段信息
desc tm_data;
-- 查看详细的表字段信息;
desc formatted tm_data;
-- 查看表建表语句;
show create table tm_data;
(7) 根据已有数据表创建数据表
-- 复制表结构
create table if not exists tm_data2 like tm_data;
-- 复制表结构及数据[取部分字段]
-- 1. 未指定分隔符
create table if not exists tm_data3 as select id, ann_num, ann_date from tm_data;
-- 2. 指定分隔符
create table if not exists tm_data4
row format delimited fields terminated by '\t'
lines terminated by '\n'
as select id, ann_num, ann_date from tm_data;
-- 3. 指定表备注信息,不能指定要创建表的字段及备注信息
create table if not exists tm_data5
comment '表备注'
row format delimited fields terminated by '\t'
lines terminated by '\n'
as select id, ann_num, ann_date from tm_data;
(8) 创建复合类型字段的数据表
-- 数据准备,两条数据
-- 新建test.txt文件,内容如下:导入hive表中
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
-- cmd: load data local inpath ‘/root/test.txt’into table student
-- 指定 array,map,struct 等复合类型的 分隔符
create table if not exists student(
name string,
friend array<string>,
children map<string,int>,
address struct<street:string,city:string>
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';
-- 查询语句
select name,friend[1],children["xiaoxiao"],address.street,address.city from student;
标签:基本,comment,string,--,ann,Hive,tm,使用,data 来源: https://www.cnblogs.com/yzyang/p/15123279.html