ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hive的DDL

2019-04-10 14:52:50  阅读:242  来源: 互联网

标签:database partition hive dept Hive DDL table data


DDL:data definittion language  数据定义语言

  主要是定义或改变表的结构、数据类型、表之间的链接和约束等初始化操作

DML:data manipulation language  数据操作语言

  主要是对数据库的数据进行增删改查操作,如select、insert、delete、update等

一、对数据库的操作

  1.创建数据库并指定在hdfs的存储路径

  create database if not exists hive_db location '/hive_db';

  注释:不指定路径所创建的数据库默认存储路径为:“/user/hive/warehouse“

  create database if not exists hive_ab;

  2.查看数据库信息

    1)查看数据库结构

    desc database hive_db;

    2)添加数据库的描述信息

    alter database hive_db set dbproperties('creater'='wyh');

    3)查看数据库的拓展信息

    desc database extended hive_db;

  3.筛选查询数据库

  show database like 'hive*';

  4.删除数据库

  drop database wyh;

  drop database if exists hive_db;

二、DDL操作

  hive中表的种类有很多,如管理表(Manager Table)、外部表(External Table)、分区表(Partition Table)、分桶表,下面我先介绍前三种表的定义、修改操作。

  1.管理表:Hive创建表时默认创建的就是管理表,也叫内部表,它不擅长数据共享,删除表后数据也会被删除。

 创建管理表

 create table if not exists emp1(id int,name string) row format delimited fields terminated by '\t';

 导入数据

 load data local inpath '/root/data/emp.txt' into table emp1;

 创建新管理表并从emp1表中导入name=wyh的该行数据

 create table if not exists emp2 as select * from emp1 where name = 'wyh';

 查询表的结构信息:

 desc formatted emp2;

  2.外部表:Hive不任务这张表拥有该数据,所以删除该表后数据不会删除,当再次创建结构与数据类型相同的表(无论是外部表还是管理表)时,数据会自动关联。但是若第二次创建的是管理表,再次删除后即使创建相同格式和数据类型的表数据将不再恢复!

  创建外部表

  create external table if not exists student(id int,name string) row format delimited fields terminated by '\t';

  导入数据

  load data local inpath '/root/data/student.txt' into table student;

  查看表结构

  desc formatted student;  (可以从Table Type看到:EXTERNAL_TABLE)

  删除表

  drop table if exists student;

  3.分区表:分区表对应HDFS的一个独立的文件目录,目录下是该分区表所有分区的目录,每个分区目录下存储该分区内存储的数据。

  创建分区表

  create table dept_partitions(id int,name string,loc string) partitioned by(day string) row format delimited fiedls terminated by '\t';

  导入数据

  load data local inpath '/root/data/dept.txt' into table dept_partition partition(day='1001'); 

  (注意:不能直接导入数据,必须指定分区)

  添加分区

  alter table dept_partition add partition(day='1002');

  (添加该分区后该分区内是没有数据的)

  查询数据

  select * from dept_partition where day='1001';

  select * from dept_partition;

  删除分区

  alter table dept_partition drop partition(day='1002');

  alter table dept_partition drop partition(day='1001'),partition(day='1002');

标签:database,partition,hive,dept,Hive,DDL,table,data
来源: https://www.cnblogs.com/HelloBigTable/p/10683329.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有