大数据开发入门到实战--Hive之DDL操作
小职 2021-08-10 来源 : 阅读 551 评论 0

摘要:本文主要介绍了大数据开发入门到实战--Hive之DDL操作,通过具体的内容向大家展现,希望对大家大数据开发Hive的学习有所帮助。

本文主要介绍了大数据开发入门到实战--Hive之DDL操作,通过具体的内容向大家展现,希望对大家大数据开发Hive的学习有所帮助。

大数据开发入门到实战--Hive之DDL操作

1:数据库DDL操作

1:创建数据库

hive > create database db_hive;

# 或者

hive > create database if not exists db_hive;

数据库在HDFS上的默认存储路径是 /user/hive/warehouse/数据库名.db


2:显示所有数据库

hive> show databases;

3:查询数据库

hive> show databases like 'db_hive*';

4:查看数据库详情

hive> desc database db_hive;

        显示数据库详细信息


hive> desc database extended db_hive;

5:切换当前数据库

hive > use db_hive;

6:删除数据库

#删除为空的数据库

hive> drop database db_hive;

#如果删除的数据库不存在,最好采用if exists 判断数据库是否存在

hive> drop database if exists db_hive;

#如果数据库中有表存在,这里需要使用cascade强制删除数据库

hive> drop database if exists db_hive cascade;

2:表DDL操作

1:建表语法介绍

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 

[(col_name data_type [COMMENT col_comment], ...)] 

[COMMENT table_comment] 

[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 分区

[CLUSTERED BY (col_name, col_name, ...) 分桶

[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 

[ROW FORMAT row_format]  row format delimited fields terminated by “分隔符”

[STORED AS file_format] 

[LOCATION hdfs_path]

官网地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL


字段解释说明


CREATE TABLE 创建一个指定名字的表


EXTERNAL 创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),指定表的数据保存在哪里


COMMENT 为表和列添加注释


PARTITIONED BY 创建分区表


CLUSTERED BY 创建分桶表


SORTED BY 按照字段排序(一般不常用)


ROW FORMAT 指定每一行中字段的分隔符


row format delimited fields terminated by ‘\t’


STORED AS 指定存储文件类型


常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、ORCFILE(列式存储格式文件)


如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE


LOCATION 指定表在HDFS上的存储位置。


2:创建内部表

1:使用标准的建表语句


use myhive;

create table stu(id int, name string);

 

可以通过insert into向hive表当中插入数据,但是不建议工作当中这么做;因为每个insert语句转换成mr后会生成一个文件

insert into stu(id,name) values(1,"zhangsan");

insert into stu(id,name) values(2,"lisi");

 

select * from  stu;

2:查询建表法


通过AS 查询语句完成建表:将子查询的结果存入新表里


create table if not exists myhive.stu1 as select id, name from stu;

 

表中有数据

select * from stu1;

3:like建表法


根据已经存在的表结构创建表


create table if not exists myhive.stu2 like stu;

 

表中没有数据

select * from stu2;

4:查询表的类型


hive > desc formatted myhive.stu;

大数据开发入门到实战--Hive之DDL操作


hql示例:创建内部表并指定字段之间的分隔符,指定文件的存储格式,以及数据存放的位置


create table if not exists myhive.stu3(id int, name string)

row format delimited fields terminated by '\t' 

stored as textfile 

location '/user/stu3';

3:创建外部表

  1:外部表因为是指定其他的hdfs路径的数据加载到表当中来


        所以hive表会认为自己不完全独占这份数据,所以删除hive表的时候,数据仍然存放在hdfs当中,不会删掉


create external table myhive.teacher (t_id string, t_name string) 

row format delimited fields terminated by '\t';

2:创建外部表的时候需要加上==external== 关键字


        location字段可以指定,也可以不指定


        指定就是数据存放的具体目录


        不指定就是使用默认目录 ==/user/hive/warehouse==

大数据开发入门到实战--Hive之DDL操作



3:向外部表当中加载数据:


        我们前面已经看到过通过insert的方式向内部表当中插入数据,外部表也可以通过insert的方式进行插入数据,只不过insert的方式,我们一般都不推荐


        实际工作当中我们都是使用load的方式来加载数据到内部表或者外部表


        load数据可以从本地文件系统加载或者也可以从hdfs上面的数据进行加载


        ①从本地文件系统加载数据到teacher表当中去,==将我们附件当汇总的数据资料都上传到node03服务器的/kkb/install/hivedatas路径下面去


mkdir -p /kkb/install/hivedatas

        ②将数据都上传到/kkb/install/hivedatas路径下


        然后在hive客户端下执行以下操作


load data local inpath '/kkb/install/hivedatas/teacher.csv' into table myhive.teacher;

        ③从hdfs上面加载文件到teacher表里面去(将teacher.csv文件上传到==hdfs的/kkb/hdfsload/hivedatas==路径下)


cd /kkb/install/hivedatas

hdfs dfs -mkdir -p /kkb/hdfsload/hivedatas

hdfs dfs -put teacher.csv /kkb/hdfsload/hivedatas

# 在hive的客户端当中执行

load data inpath '/kkb/hdfsload/hivedatas' overwrite into table myhive.teacher;

4:内部表与外部表的互相转换

1:内部表转换为外部表


#将stu内部表改为外部表

 

alter table stu set tblproperties('EXTERNAL'='TRUE');

2:外部表转换为内部表


#把teacher外部表改为内部表

 

alter table teacher set tblproperties('EXTERNAL'='FALSE');

5:内部表与外部表的区别

①建表语法的区别


外部表在创建的时候需要加上==external==关键字


②删除表之后的区别


内部表删除后,表的元数据和真实数据都被删除了


外部表删除后,仅仅只是把该表的元数据删除了,真实数据还在,后期还是可以恢复出来


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

大数据开发入门到实战--Hive之DDL操作

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程