hadoop 第二期

Hive

启动hive 使用命令`hive`

输入命令之后要有一个 ; 结尾!!!!!!!

DDL命令

1.创建数据表

create table lxl(
	num int,
	name string,
	gender string
) 
row formate delimited
fields terminated by '\t';

2.查看当前数据库已有的数据表:

show tables;

3.查看表的结构:

desc [表名];

desc lxl;

4.查看数据表的全部内容:

select * from [表名];

select * from lxl;

5.导入数据库:

load data lcoal inpath [地址] overwrite into table [表名]

load data local inpath '/home/zkpk/ll' overwrite into table lxl;

/home/zkpk/ll 是本地文件的地址

6.增加表的字段(列):

alter table [表名] add columns ([字段名] [字段类型]);

alter table lxl add columns(age int);

7.修改字段名:

alter table [表名] change [old] [new] [类型];

alter table lxl change age nianling int;

8.修改字段排序

修改字段排序也是修改字段,所以需要添加上 旧表名和新表名

alter table [表名] change [旧字段名] [新字段名] [类型] after [另一个字段]; 
# 把一个字段放到另一个字段的后面

9.删除字段

这个操作实际上是替换,用括号里的表结构替换已有的表结构

alter table [表名] replace columns([留下来的字段名] [留下来的字段类型],。。。)

10.以一个已有的表lxl 为模板 复制一个表

# 全复制 (复制结构和内容)
create table lxl1 as select * from lxl;

# 可以加条件(复制结构,内容不复制)
create table lxl2 as select * from lxl where 1 = 0;

11.重命名表

alter table [旧表名] rename to [新表名];

12.清空表内容

truncate table lxl1;

13.删除表结构

drop table [表名]

hive里面的表叫做元数据,hdfs里的表叫物理数据

14.创建外部表

create external table [外部表名exlxl](
	num int,
)

如果创建外部表,删除此表,只删除hive里面的表,不会删除hdfs里的表

15.下载表到本地

insert overwrite local directory '[路径]' select * from lxl;

内部表和外部表的区别:内部表创建删除后外部表也没有了,外部表在hive中删除,只是删除了内部表,外部表还在

16.建立分区表:

分区表就是把这个表分成多个小表,方便检索

create table palxl(
	num int,
	name string
) partition by(gender string)
row formate delimited
fields terminated by '\t';

给女孩建立一个分区

insert overwrite table palxl partition(gender) select no,name,gender from lxl where gender='f';

#第一次会出错,执行以下三条命令;

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=10;

桶表

桶表是对分区表的进一步划分

创建桶表:

create table clupalxl(no int, name string, gender string)
clustered by(no) sorted by(no) into 3 buckets
row format delimited
fields terminated by '\t'

向桶表插入数据

insert into table clupalxl select no,name,gender from palxl distribute by(no) sort by(no);

#需要执行以下命令(允许分桶)
set hive.enforce.bucketing=true;

hive中的复杂数据类型

创建带有复杂数据类型的表:

// TODO 补全

视图

视图时为了展示内容,创建视图不会存储在hdfs中,是一个虚表

创建视图:

create view [视图名]([字段],。。。) as [查询语句]

数据库de操作

查看数据库

show databases;

创建数据库

create database [数据库名];
create database l;

为新建的数据库创建表

create table [数据库名].[表名]....

查看l数据库里面的所有表

show tables in [数据库名];
show tables in l;

删除数据库

# 直接删除数据库,不能删除非空
drop database [数据库名];
# 删除非空数据库
drop database [数据库名] cascade;
posted @   zlgewj  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示