阅读 70

Hive DDL之数据库操作

1、Hive DDL

(1)Hive Data Definition Language

(2)create、delete、alter(更新)...管理相关的

 

2、Hive 数据抽象 / 结构

(1)database 数据库                ---- 对应HDFS一个目录

(2)  table 表                       ---- 对应HDFS一个目录

(3)    partition 分区表    ---- 对应HDFS一个目录

(3)    data 文件

(4)      bucket 分桶   ---- 对应HDFS一个文件

(4)      data 文件

 

3、创建数据库hivetest的语法

CREATE [REMOTE] (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [MANAGEDLOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];

 CREATE 关键字;[] 可有可无;(|)二选一;

hive> CREATE DATABASE hivetest;
hive> show databases;

查看在Hive在HDFS中默认的存储路径 /user/hive/warehouse

当然,这个路径是可以修改的。

hivetest库的组织结构是 /user/hive/warehouse/hivetest.db

除了我们自己创建的数据库hive、testzhang_db、hivetest,还有一个默认的default数据库,但在hdfs上并不体现出来。

[hadoop@hadoop000 ~]$ cd software/
[hadoop@hadoop000 software]$ mysql -uroot -proot
mysql> show databases;
mysql> use hadoop_hive;
mysql> show tables;
mysql> select * from DBS \G;

DB_ID: 11
           DESC: NULL
DB_LOCATION_URI: hdfs://hadoop000:8020/user/hive/warehouse/hivetest.db
           NAME: hivetest
     OWNER_NAME: hadoop
     OWNER_TYPE: USER
5 rows in set (0.00 sec)

查看Hadoop里的文件,目前文件里都为空,因为hivetest.db是空的数据库

[hadoop@hadoop000 ~]$ hadoop fs -ls /user/hive/warehouse/hivetest.db
[hadoop@hadoop000 ~]$ hadoop fs -ls /user/hive/warehouse/hive.db

 

4、建议:使用以下语法创建数据库,防止报错。

[hadoop@hadoop000 bin]$ pwd
/home/hadoop/app/hive-1.1.0-cdh5.15.1/bin
[hadoop@hadoop000 bin]$ hive
hive> CREATE DATABASE IF NOT EXISTS hive;

  

5、更改默认存储HDFS路径

在/test/location下是空的,因为在hive2的数据库中没有表。

hive> CREATE DATABASE IF NOT EXISTS hive2 LOCATION ‘/test/location‘;
OK
Time taken: 0.012 seconds
mysql> select * from DBS \G;

*************************** 3. row ***************************
          DB_ID: 4
           DESC: NULL
DB_LOCATION_URI: hdfs://hadoop000:8020/test/location
           NAME: hive2
     OWNER_NAME: hadoop
     OWNER_TYPE: USER

  

6、使用DBPROPERTIES

hive> CREATE DATABASE IF NOT EXISTS hive3
    > WITH DBPROPERTIES(‘creator‘=‘jieqiong‘);
OK
Time taken: 0.01 seconds
hive> desc database hive;
OK
hive            hdfs://hadoop000:8020/user/hive/warehouse/hive.db       hadoop  USER    
Time taken: 0.192 seconds, Fetched: 1 row(s)
hive> desc database hive2;
OK
hive2           hdfs://hadoop000:8020/test/location     hadoop  USER    
Time taken: 0.011 seconds, Fetched: 1 row(s)
hive> desc database hive3;
OK
hive3           hdfs://hadoop000:8020/user/hive/warehouse/hive3.db      hadoop  USER    
Time taken: 0.008 seconds, Fetched: 1 row(s)
hive> desc database extended hive3;
OK
hive3           hdfs://hadoop000:8020/user/hive/warehouse/hive3.db      hadoop  USER    {creator=jieqiong}
Time taken: 0.01 seconds, Fetched: 1 row(s)

  

7、目前阶段的命令行,我在哪个数据库里?

(1)所以目前所处的库是default数据库

hive> show databases;
OK
default
hive
hive2
hive3
hivetest
testzhang_db
Time taken: 0.153 seconds, Fetched: 6 row(s)
hive> set hive.cli.print.current.db;
hive.cli.print.current.db=false
hive> set hive.cli.print.current.db=true;
hive (default)> 

    

8、清屏

hive (default)> !clear;

  

9、切换数据库

hive (default)> use hivetest;
OK
Time taken: 0.026 seconds
hive (hivetest)>

  

10、展现数据库中的表

hive (hivetest)> show tables;
OK
Time taken: 0.051 seconds

  

11、删除空的数据库

hive (testzhang_db)> show databases;
OK
default
hive
hive2
hive3
hivetest
testzhang_db
Time taken: 0.008 seconds, Fetched: 6 row(s)
hive (testzhang_db)> show tables;
OK
helloworld
Time taken: 0.013 seconds, Fetched: 1 row(s)
hive (testzhang_db)> drop database hives;
FAILED: SemanticException [Error 10072]: Database does not exist: hives
hive (testzhang_db)> drop database hive3;
OK
Time taken: 0.113 seconds
hive (testzhang_db)> drop database hivetest;
OK
Time taken: 0.024 seconds
hive (testzhang_db)> 

  

12、查找匹配条件的数据库

(1)以hive开头的数据库

hive (testzhang_db)> show databases like ‘hive*‘;
OK
hive
hive2
Time taken: 0.011 seconds, Fetched: 2 row(s)

  

13、删除非空数据库(工作中一定不要用!!)

(1)删除后,依旧是以hive (testzhang_db)> 显示,没关系的。

hive (testzhang_db)> drop database testzhang_db CASCADE;

 

原文:https://www.cnblogs.com/jieqiong1755/p/15109543.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐