• 在hive中创建数据库的本质就是在$HIVE_HOME/conf/hive-site.xml中<name>hive.metastore.warehouse.dir</name>指定的目录下创建一个以数据库名命名的目录,并以.db为后缀。hive中会有一个自带的数据库是default,default库的目录就是/user/hive/warehouse本身,不会再去创建一个.db目录。

我们也可以在HDFS的目录树上看到该目录:

这里面的test_db数据库是之前测试时候建的,可以忽略。

  • 在hive中数据库名、表名不区分大小写。
  • 创建数据库

在hadoop01节点上(hive客户端)创建数据库:

create database test0420;
show databases;

我们可以在hadoop03节点上的mysql服务中查看我们hive下面创建了哪些数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)mysql> use hive;      //这是我们在配置jdbc连接信息时配置过会帮我们自动创建这个数据库,数据库名当时我们指定的是hivemysql> show tables;mysql> select * from DBS;
+-------+-----------------------+------------------------------------------------------+----------+------------+------------+
| DB_ID | DESC                  | DB_LOCATION_URI                                      | NAME     | OWNER_NAME | OWNER_TYPE |
+-------+-----------------------+------------------------------------------------------+----------+------------+------------+
|     1 | Default Hive database | hdfs://hadoop01:8020/user/hive/warehouse             | default  | public     | ROLE       |
|     6 | NULL                  | hdfs://hadoop01:8020/user/hive/warehouse/test0420.db | test0420 | root       | USER       |
+-------+-----------------------+------------------------------------------------------+----------+------------+------------+
2 rows in set (0.00 sec)#DBS这个表中记录了我们当前hive下有哪些数据库。
  • 切换数据库
0: jdbc:hive2://hadoop02:10000> use test0420;
No rows affected (0.362 seconds)

如果不使用use去切换数据库的话,默认是在hive自带的default这个数据库下。

  • 查看数据库的描述信息(三种方式)
0: jdbc:hive2://hadoop02:10000> desc database test0420;
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
|  db_name  | comment  |                      location                      | owner_name  | owner_type  | parameters  |
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
| test0420  |          | hdfs://hadoop01:8020/user/hive/warehouse/test0420.db | root        | USER        |             |
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
1 row selected (0.451 seconds)
0: jdbc:hive2://hadoop02:10000> desc database extended test0420;
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
|  db_name  | comment  |                      location                      | owner_name  | owner_type  | parameters  |
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
| test0420  |          | hdfs://hadoop01:8020/user/hive/warehouse/test0420.db | root        | USER        |             |
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
1 row selected (0.256 seconds)
0: jdbc:hive2://hadoop02:10000> describe database extended test0420;
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
|  db_name  | comment  |                      location                      | owner_name  | owner_type  | parameters  |
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
| test0420  |          | hdfs://hadoop01:8020/user/hive/warehouse/test0420.db | root        | USER        |             |
+-----------+----------+----------------------------------------------------+-------------+-------------+-------------+
1 row selected (0.192 seconds)
  • 删除空数据库
0: jdbc:hive2://hadoop02:10000> drop database test0420;
  • 删除非空数据库
0: jdbc:hive2://hadoop02:10000> drop database test0420 cascade;
  • 查看当前正在使用的数据库
0: jdbc:hive2://hadoop02:10000> select current_database();
  • 创建表

新建了一个数据库test1,在test1下创建表:

0: jdbc:hive2://hadoop02:10000> create table test_user(id int, name string);

在mysql中查看新建的表:

mysql> select * from TBLS;
+--------+-------------+-------+------------------+-------+-----------+-------+-----------+---------------+--------------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME  | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT | IS_REWRITE_ENABLED |
+--------+-------------+-------+------------------+-------+-----------+-------+-----------+---------------+--------------------+--------------------+--------------------+
|      1 |  1650456656 |     7 |                0 | root  |         0 |     1 | test_user | MANAGED_TABLE | NULL               | NULL               |                    |
+--------+-------------+-------+------------------+-------+-----------+-------+-----------+---------------+--------------------+--------------------+--------------------+
1 row in set (0.00 sec)

这里的DB_ID为7,对应的就是test1这个库:

mysql> select * from DBS;
+-------+-----------------------+---------------------------------------------------+---------+------------+------------+
| DB_ID | DESC                  | DB_LOCATION_URI                                   | NAME    | OWNER_NAME | OWNER_TYPE |
+-------+-----------------------+---------------------------------------------------+---------+------------+------------+
|     1 | Default Hive database | hdfs://hadoop01:8020/user/hive/warehouse          | default | public     | ROLE       |
|     7 | NULL                  | hdfs://hadoop01:8020/user/hive/warehouse/test1.db | test1   | root       | USER       |
+-------+-----------------------+---------------------------------------------------+---------+------------+------------+
2 rows in set (0.00 sec)

  • 在指定数据库下创建表

我们可以在自己当前的库下执行命令,使之在另外的数据库下创建一个表,这里我新建一个数据库test2,并在test1库下执行命令指定让其在test2库下创建新表test_user2:

0: jdbc:hive2://hadoop02:10000> create database test2;
No rows affected (0.21 seconds)
0: jdbc:hive2://hadoop02:10000> show databases;
+----------------+
| database_name  |
+----------------+
| default        |
| test1          |
| test2          |
+----------------+
3 rows selected (0.128 seconds)
0: jdbc:hive2://hadoop02:10000> select current_database();
+--------+
|  _c0   |
+--------+
| test1  |
+--------+
1 row selected (0.118 seconds)0: jdbc:hive2://hadoop02:10000> create table test2.test_user2(id int, name string);#在当前test1库下查看test2库下的表
0: jdbc:hive2://hadoop02:10000> show tables in test2;
+-------------+
|  tab_name   |
+-------------+
| test_user2  |
+-------------+
1 row selected (0.458 seconds)#mysql端查看
mysql> select * from TBLS;
+--------+-------------+-------+------------------+-------+-----------+-------+------------+---------------+--------------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME   | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT | IS_REWRITE_ENABLED |
+--------+-------------+-------+------------------+-------+-----------+-------+------------+---------------+--------------------+--------------------+--------------------+
|      1 |  1650456656 |     7 |                0 | root  |         0 |     1 | test_user  | MANAGED_TABLE | NULL               | NULL               |                    |
|      2 |  1650457472 |     8 |                0 | root  |         0 |     2 | test_user2 | MANAGED_TABLE | NULL               | NULL               |                    |
+--------+-------------+-------+------------------+-------+-----------+-------+------------+---------------+--------------------+--------------------+--------------------+
2 rows in set (0.00 sec)mysql> select * from DBS;
+-------+-----------------------+---------------------------------------------------+---------+------------+------------+
| DB_ID | DESC                  | DB_LOCATION_URI                                   | NAME    | OWNER_NAME | OWNER_TYPE |
+-------+-----------------------+---------------------------------------------------+---------+------------+------------+
|     1 | Default Hive database | hdfs://hadoop01:8020/user/hive/warehouse          | default | public     | ROLE       |
|     7 | NULL                  | hdfs://hadoop01:8020/user/hive/warehouse/test1.db | test1   | root       | USER       |
|     8 | NULL                  | hdfs://hadoop01:8020/user/hive/warehouse/test2.db | test2   | root       | USER       |
+-------+-----------------------+---------------------------------------------------+---------+------------+------------+
3 rows in set (0.00 sec)
  • 指定特定格式地建表
0: jdbc:hive2://hadoop02:10000> create table if not exists test_user3(> name string comment 'user name',    #对name字段做备注> age int,> sex string> )> comment 'user table'                #对表做备注> row format delimited                #设置行格式> fields terminated by '\t'           #设置字段之间以什么做分隔> lines terminated by '\n'            #设置行之间以什么做分隔> stored as textfile;                 #以什么格式在HDFS上存储
  • 查看表结构(三种方式)
0: jdbc:hive2://hadoop02:10000> desc test_user3;
+-----------+------------+------------+
| col_name  | data_type  |  comment   |
+-----------+------------+------------+
| name      | string     | user name  |
| age       | int        |            |
| sex       | string     |            |
+-----------+------------+------------+
3 rows selected (0.459 seconds)
0: jdbc:hive2://hadoop02:10000> desc extended test_user3;
+-----------------------------+----------------------------------------------------+----------------+
|          col_name           |                     data_type                      |    comment     |
+-----------------------------+----------------------------------------------------+----------------+
| name                        | string                                             | user name      |
| age                         | int                                                |                |
| sex                         | string                                             |                |
|                             | NULL                                               | NULL           |
| Detailed Table Information  | Table(tableName:test_user3, dbName:test1, owner:root, createTime:1650461273, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:name, type:string, comment:user name), FieldSchema(name:age, type:int, comment:null), FieldSchema(name:sex, type:string, comment:null)], location:hdfs://hadoop01:8020/user/hive/warehouse/test1.db/test_user3, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format= | , line.delim=  |
| , field.delim=              | }), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{totalSize=0, numRows=0, rawDataSize=0, COLUMN_STATS_ACCURATE={"BASIC_STATS":"true"}, numFiles=0, transient_lastDdlTime=1650461273, comment=user table}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE, rewriteEnabled:false) |                |
+-----------------------------+----------------------------------------------------+----------------+
6 rows selected (0.416 seconds)
0: jdbc:hive2://hadoop02:10000> describe extended test_user3;
+-----------------------------+----------------------------------------------------+----------------+
|          col_name           |                     data_type                      |    comment     |
+-----------------------------+----------------------------------------------------+----------------+
| name                        | string                                             | user name      |
| age                         | int                                                |                |
| sex                         | string                                             |                |
|                             | NULL                                               | NULL           |
| Detailed Table Information  | Table(tableName:test_user3, dbName:test1, owner:root, createTime:1650461273, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:name, type:string, comment:user name), FieldSchema(name:age, type:int, comment:null), FieldSchema(name:sex, type:string, comment:null)], location:hdfs://hadoop01:8020/user/hive/warehouse/test1.db/test_user3, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format= | , line.delim=  |
| , field.delim=              | }), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{totalSize=0, numRows=0, rawDataSize=0, COLUMN_STATS_ACCURATE={"BASIC_STATS":"true"}, numFiles=0, transient_lastDdlTime=1650461273, comment=user table}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE, rewriteEnabled:false) |                |
+-----------------------------+----------------------------------------------------+----------------+
6 rows selected (0.177 seconds)
  • 修改表名
0: jdbc:hive2://hadoop02:10000> alter table test_user3 rename to test_user4;
  • 修改列名/修改列的数据类型
0: jdbc:hive2://hadoop02:10000> alter table test_user4 change column name sname string;#name sname string依次为原列名、新列名、列的数据类型,在修改列名时,不管列的数据类型是否与修改前的一样,都应该给定数据类型
#如果是不修改列名,只修改列的数据类型,那么这里面的两个字段名都还是写原来的字段名即可。
  • 添加字段
0: jdbc:hive2://hadoop02:10000> alter table test_user4 add columns(address string);
  • 修改列的顺序

注意:

1.在hive 2.x之后的版本中,修改列的位置时,必须是相同的数据类型的位置进行移动。

2.修改了列的位置,并不会将该列对应的值也进行移动,也就是说只是将列的名字进行了位置上的移动,数据不会跟着移动,就会导致原本列的值对应了移动后的列名。在下面的例子中,就是原来的sex的值修改后变成了address的值,address原来的值对应到了sex的列。

修改前:

将sex列放在address列后面:

0: jdbc:hive2://hadoop02:10000> alter table test_user4 change column sex sex string after address;

  • 删除表
0: jdbc:hive2://hadoop02:10000> drop table test_user;

Hive的基本操作之库、表相关推荐

  1. Hive的基本操作-创建外部表

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

  2. Hive的基本操作-创建内部表

    管理表的操作 建表初体验 use myhive; create table stu(id int,name string); insert into stu values (1,"zhang ...

  3. DolphinScheduler无故删除HDFS上的Hive库表目录

    亲爱的朋友们,我可爱的同事又搞了个大BUG 待我慢慢道来- DolphinScheduler大家应该都用过,中国人开源的一个调度工具,类似Azkaban,本次的事情就是在DolphinSchedule ...

  4. hive查看数据库里库的信息_Hive学习之路 (三)Hive元数据信息对应MySQL数据库表...

    概述 Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理.上一篇hive的安装也是将元数据信息存放在MySQL数据库中. Hive的元数据信息在MySQL数据中有57 ...

  5. 数据库的基本操作——建库、删库、建表、删表等

    数据库的基本操作--建库.删库.建表.删表等 1.建库 2.建表 3.查询(query) 1.建库 2.建表 按第二个箭头,表的属性就会出来 3.查询(query)

  6. hive删除数据、删除分区、删除库表

    hive删除数据.删除分区.删除库表 -- 删除库 drop database if exists db_name; -- 强制删除库 drop database if exists db_name ...

  7. (超长文)Hive Sql基本操作

    Hive Sql基本操作 1.hive里面不显示列名 2.注释问题2.1 MySQL中的注释2.2 Hive中的注释3.乱码问题3.1 修改表字段注解和表注解3.2 修改分区字段注解3.3 修改索引注 ...

  8. Hive的基本操作-数据库的创建和删除

    Hive 的基本操作 创建数据库 create database if not exists myhive; use myhive; 说明:hive的表存放位置模式是由hive-site.xml当中的 ...

  9. Hive的基本操作总结

    文章目录 目录 前言: 1.Hive基本操作 1.1.DDL操作 1.2.DML操作 1.3.Hive Join 总结: 目录 前言: 对于Hive来说最重要的一点就是能够用Hql来进行数据分析.而H ...

最新文章

  1. Mongodb的安装部署
  2. 【Flask】Jinja2之模板继承
  3. 安全是一个系统问题包括服务器安全,信息安全技术题库:信息泄露对于Web服务器的危害在于( )。...
  4. linux命令we,Linux学习篇之基础命令
  5. android+六边形布局,android – 带六边形触摸区域的六角形按钮
  6. 腾讯管家去除桌面快捷小图标
  7. Ubuntu12环境下Thin+rails(4)+ruby(2)+nginx+mysql 配置
  8. 元宵节快乐 | 2月15日 星期二 | 携程在国内率先开启混合办公模式;米哈游推出元宇宙品牌;AMD宣布完成对赛灵思的收购...
  9. CORS跨域限制以及预请求验证(C++ Qt框架实现)
  10. JavaEE基础(02):Servlet核心API用法详解
  11. Android进程间通信之socket通信
  12. 【华为云技术分享】Batch Normalization (BN) 介绍
  13. 开发一款浏览器内核需要学习哪些方面的知识?
  14. App专项测试之弱网测试
  15. Spring Boot入门(2)-项目属性配置
  16. CSDN账号,你需要不
  17. 获取 CSDN 1024 程序员节勋章教程
  18. 《University Calculus》-chaper8-无穷序列和无穷级数-比值审敛法
  19. 知乎账号登录+验证码
  20. 直播电商平台开发,video组件实现视频弹幕功能

热门文章

  1. 数据结构(十)——KMP算法
  2. iOS 开发之实现 App 消息推送(最新)
  3. JavaScript实现网页计时器(有完整代码)
  4. 留守女子在家中身亡 2岁孙女7天无人照顾
  5. 儿童感染性腹泻病详细问诊问题,该如何做出具体诊断
  6. 因为日报,架构师绩效被打C了!
  7. Tornado基础知识
  8. 【Unity】Input——检测鼠标、键盘、手柄输入、鼠标在屏幕上的位置等等
  9. 前端学习笔记-07post请求和get请求,样式以及CSS
  10. 广州大学2020操作系统实验一:进程管理与进程通信