ICode9

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

Hive-day03-DDL语句

2021-11-09 23:03:28  阅读:157  来源: 互联网

标签:hdfs name database day03 db hive default Hive DDL


1:创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_
[LOCATION hdfs_
[WITH DBPROPERTIES (property_name=property_value, ...)];

        1.1:创建一个数据库,在hdfs默认存储路径/user/hive/warehouse/*.db

hive (default)> create database db_hive;

        1.2:避免数据库已存在

hive (default)> create database db_
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists
hive (default)> create database if not exists db_hive;

        1.3:创建一个库,指定hdfs存储路径

hive (default)> create database db_hive2 location '/db_hive2.db';

2:查询数据库

        2.1:显示数据库

hive> show databases;

        2.2:过滤显示查询的数据库

hive> show databases like 'db_hive*';
OK
db_hive
db_hive_1

        2.3:显示数据库信息

hive> desc database db_hive;
OK
db_hive hdfs://hadoop102: 9820 /user/hive/warehouse/db_hive.db
atguiguUSER

        2.4:显示数据库详细信息,extended

hive> desc database extended db_hive;
OK
db_hive hdfs://hadoop102: 9820 /user/hive/warehouse/db_hive.db
atguiguUSER

        2.5:切换当前数据库

hive (default)> use db_hive;

3:修改数据库

hive (default)> alter database db_hive
set dbproperties('createtime'='20170830');
hive> desc database extended db_hive;
db_name comment location owner_name owner_type parameters
db_hive hdfs://hadoop102: 9820 /user/hive/warehouse/db_hive.db
atguigu USER {createtime=20170830}

4:删除数据库

        4.1:删除空数据库

hive>drop database db_hive2;

        4.2:删除的数据库不存在,使用if exists判断是否存在

hive> drop database db_hive;
FAILED: SemanticException [Error 10072]: Database does not exist: db_hive
hive> drop database if exists db_hive2;

        4.3:如果数据库不为空,可以采用cascade命令,强制删除

hive> drop database db_hive;
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.DDLTask.
InvalidOperationException(message:Database db_hive is not empty. One or
more tables exist.)
hive> drop database db_hive cascade;

5:创建表

        5.1:建表

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment],...)]
[COMMENT ta ble_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]
[STORED AS file_format]
[LOCATION hdfs_path]
[TBL PROPERTIES (property_name=property_value, ...)]
[AS select_statement]

        5.2:介绍

1:EXTRNAL 关键字可以让用户创建一个外部表

2:PARTITIONED BY 创建分区表

3:CLUSTERED BY 创建分桶表

4:SORTED BY 对桶中的一个或多个列另外排序

5:ROW FORMAT:定义行的格式

eg:create table test(id int,name string) row format delimited fields terminated by ',';

这样的话,使用insert语句插入数据的时候,在hdfs上面对应的文件内容就是以逗号分隔的,否则会使用默认的分隔符,使用逗号这样的,对于后续通过是哟个hdfs -put 命令,将文件上传到hdfs上,也有好处,需要注意的时,文件的内容需要也是以逗号分隔,不然会生成null

6:FILE_FORMAT:指定文件格式

7:hdfs_path:指定表的位置信息

8:TBL PROPERTIES:额外属性

9:AS :后跟查询语句,根据查询结果创建表

6: 管理表(内部表)和外部表

        1:当我们删除一个管理表时,Hive也会删除这个表中的数据,管理表不适合和其他工具共享数据。但是删除外部表的时候,只会删除元数据信息,不会删除表中的数据,即mysql里面信息会被删除,但是数据仍然在hdfs上面有保存。

         2:如果是外部表,就算是手误删除了,如果能找到建表语句,然后执行之后,通过select语句还是能找到之前表中的数据。安全性更高一些。但是内部表就不会这样,不能找到数据。

        3:内部表和外部表的转换

                1:查询表的类型

hive (default)> desc formatted student2
Table Type: MANAGED_TABLE

                2:修改内部表student2为外部表

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

                3:查询表的类型

hive (default)> desc formatted student2
Table Type: EXTERNAL _TABLE

                4:修改外部表student2为内部表

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

                5:查询表的类型

hive (default)> desc formatted student2;
Table Type: MANAGED_TABLE

7:修改表

        1:重命名表

hive (default)> alter table dept_partition2 rename to dept_partition3;

        2:更新列

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name
column_type [COMMENT col_comment] [FIRST|AFTER column_name]

        3:增加和替换列

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT
col_comment], ...)
ADD 是代表新增一字段,字段位置在所有列后,(partition列前)
REPLACE 则是表示替换表中所有字段,REPLACE 是整张表的角度,CHANGE 是单个列的角度

        4:查询表结构

hive> desc dept;

        5:添加列

hive (default)> alter table dept add columns(deptdesc string);

        6:查询表结构

hive> desc dept;

        7:更新列

hive (default)> alter table dept change column deptdesc desc string

就算是不想改类型,也要把原来的类型加上去

        8:查询表结构

hive> desc dept;

        9:替换列

hive (default)> alter table dept replace columns(deptno string, dname
string, loc string);

        10:查询表结构

hive> desc dept;

        11:删除表

hive (default)> drop table dept;

标签:hdfs,name,database,day03,db,hive,default,Hive,DDL
来源: https://blog.csdn.net/AlphaG/article/details/121237426

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

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

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

ICode9版权所有