hive 操作

库操作

创建数据库
create database db_test;
创建库的时候带注释
create database if not exists t2 comment 'learning hive';
创建带属性的库
create database if not exists t3 with dbproperties('creator'='hadoop','date'='2018-04-05');
查看有哪些数据库
show databases;
显示数据库的详细属性信息
desc database extended t3;
查看正在使用哪个库
select current_database();
查看建库语句
show create database t3;
删除库
drop database dbname;
drop database if exists dbname;
hive 不允许删除包含表的数据库,有两种解决办法:
1、 手动删除库下所有表,然后删除库
2、 使用 cascade 关键字

drop database if exists dbname cascade;
切换库
use db_test;

表操作

创建表

最佳实践:
  如果一份数据已经存储在HDFS上,并且要被多个用户或者客户端使用,最好创建外部表
  反之,最好创建内部表。

  如果不指定,就按照默认的规则存储在默认的仓库路径中。
1. 创建默认的内部表
CREATE TABLE page_view(
     viewTime INT, 
     userid BIGINT,
     page_url STRING, 
     referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User')
 COMMENT 'This is the page view table'
 PARTITIONED BY(dt STRING, country STRING)
 ROW FORMAT DELIMITED
   FIELDS TERMINATED BY '\001'
   COLLECTION ITEMS TERMINATED BY '\002'
   MAP KEYS TERMINATED BY '\003'
 STORED AS TEXTFILE;

分隔符问题参考: https://blog.csdn.net/qiulinsama/article/details/87192306

create table student(id int, name string, sex string, age int,department string) row format delimited fields terminated by ",";

创建外部表

CREATE EXTERNAL TABLE page_view(
     viewTime INT, 
     userid BIGINT,
     page_url STRING, 
     referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User',
     country STRING COMMENT 'country of origination')
 COMMENT 'This is the staging page view table'
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
 STORED AS TEXTFILE
 LOCATION '/user/hadoop/warehouse/page_view';
 create external table student_ext
(id int, name string, sex string, age int,department string) row format delimited fields terminated by "," location "/hive/student";
为表添加分区
alter table student_ptn add partition(city="beijing");
如果某张表是分区表。那么每个分区的定义,其实就表现为了这张表的数据存储目录下的一个子目录
使用CTAS创建表

就是从一个查询SQL的结果来创建一个表进行存储

create table student_ctas as select * from student where id < 95012;
复制表结构创建表
create table student_copy like student;
查看表列表
show tables;

# 查看myhive库里的表列表
show tables in myhive
查看数据库中以xxx开头的表
show tables like 'student_c*';
查看表的字段信息
desc student;
查看表的详细信息
# 格式不友好
desc extended student;

# 格式友好
desc formatted student;
查看表分区信息
show partitions student;
查看表的详细建表语句
show create table student_ptn;

修改表

修改表名
 alter table student rename to new_student;
1.增加字段
alter table new_student add columns (score int);
2.修改一个字段的名称
alter table new_student change name new_name string;
3.删除一个字段(不支持!!!)
4.替换所有字段
alter table new_student replace columns (id int, name string, address string);
删除表的一个分区
 alter table student_ptn drop partition (city='beijing');
删除表
drop table new_student;
删除数据
# hive 不支持delete from ,只能按分区删除数据
# 比如
truncate table dws.student_ptn partition(dt='2021-12-01');
清空表
truncate table student_ptn;

RowKey 前缀匹配查询

scan 'zone_factor_ifs',{ROWPREFIXFILTER => '22882-8133'}
参考:

https://www.cnblogs.com/fnlingnzb-learner/p/12217162.html

posted @ 2022-01-28 22:26  明月照江江  阅读(37)  评论(0编辑  收藏  举报