主页 > 新闻资讯 > 大数据学习:Hive表DDL操作

大数据学习:Hive表DDL操作

作者:张老师 浏览次数: 2021-03-16 17:40
Hive的分区分表,在内部实现来说是涉及到非常多的细节的,在初入门的学习阶段,是尤其需要去细细理解掌握的。今天的大数据学习分享,我们主要来讲讲Hive表DDL操作。

大数据学习:Hive表DDL操作

Hive建表语法介绍

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]

Hive建表字段说明

- 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上的存储位置。

Hive创建内部表

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;
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';

Hive创建外部表

外部表因为是指定其他的hdfs路径的数据加载到表当中来,所以hive表会认为自己不完全独占这份数据,所以删除hive表的时候,数据仍然存放在hdfs当中,不会删掉

create external table myhive.teacher (t_id string, t_name string)
row format delimited fields terminated by '\t';

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

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

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

不指定就是使用默认目录 ==/user/hive/warehouse==向外部表当中加载数据:

外部表也可以通过insert的方式进行插入数据,只不过insert的方式,我们一般都不推荐。实际工作当中我们都是使用load的方式来加载数据到内部表或者外部表,load数据可以从本地文件系统加载或者也可以从hdfs上面的数据进行加载。

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;

关于大数据学习,Hive表DDL操作,以上就为大家做了基本的介绍了。Hive表操作,是Hive当中的关键知识点,也是核心基础,掌握好了对于后续的学习和工作都更有好处。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础就业班本月正在招生中,课程大纲及学习视频可联系客服获取!
热点排行
推荐文章
立即申请>>