Hive DDL DML基础

1、Database 表空间
    是HDFS的一个文件夹,列出hive中的表空间语句为:show databases
    hive默认有一个default表空间。
在这里插入图片描述
    默认的数据库存储位置为:/user/hive/warehouse
    位置设置参数为:hive.metastore.warehouse.dir
在这里插入图片描述
2、DDL : Data Definition Language
    create、delete、alter、drop关键字
    创建表空间
    CREATE (DATABASE|SCHEMA) [IF NOT EXISTS]     database_name
    [COMMENT database_comment]
    [LOCATION hdfs_path]
    [WITH DBPROPERTIES (property_name=property_value, ...)];

     例:
在这里插入图片描述
     这里创建了一个名为my_datadatabase;
     if not exists的意思是如果不存在就创建,如果存在则不创建。
     另:图中hive客户端后面跟了表空间的名字(default),这里是可以用参数设置的,具体设置参数是在hive-site.xml 里面设置hive.cli.print.current.db

在这里插入图片描述
value设置为true,则会带出当前所在的database。如果不需要,则设置为false。
创建的表空间my_data存在于HDFS路径${hive.metastore.warehouse.dir}/dbname.db
在这里插入图片描述

我们还可以给创建的database给个描述,创建语句为

CREATE DATABASE IF NOT EXISTS my_data2
COMMENT 'this is my second database'
WITH DBPROPERTIES ('creator'='my', 'date'='20151314');

创建好以后,用desc database extended my_data2查询信息,可以看到我们刚才创建的my_data2的信息
在这里插入图片描述

DROP
想要删除database,语句为drop database my_data2
在这里插入图片描述
因为my_data2里面是空的,没有表存在,所以可以drop。如果表空间里面存在表,直接删除就会报错。
在这里插入图片描述
如果表空间里面存在表,想要删除这个表空间,可以先删除里面的表再drop,也可以在删除表空间的语句后面加上cascade,这个关键字的意思是强制删除。但生产环境不建议这么使用

3、TABLE

hive是构建在hadoop之上的,所建的表也存储于hdfs。
创建表的时候要指定分隔符,如空格或者制表符(\t)
如:
在这里插入图片描述
添加数据到emp表中,这里我们用
load data local inpath '/home/hadoop/data/emp.txt' overwrite into table emp;语句从本地上传数据到表中。
在这里插入图片描述
在这里插入图片描述

数据load成功后,我们查询emp表,里面已经有我们想要的数据。

local的意思是从本地上传文件 如果不加则是从HDFS上传。
overwirte的意思是重写,即如果表里如果已经存在数据,则会先清空原数据再插入。如果不写这个关键字,则是追加数据的意思。

内部表和外部表
内部表:
  hive默认建的是内部表,内部表为hive管理,如果删除内部表,元数据和HDFS上的数据都会被删除。
  如我们上面建的表emp,我们可以用命令desc formatted emp查看其属性
在这里插入图片描述
在这里插入图片描述
   如上图,我们可以看到emp表的列名,database,owner,location等信息。注意Table_Type这个参数,为MANAGED_TABLE,意思为内部表。

外部表
   建表是加上external关键字,创建的表即为外部表。删除外部表时,元数据被删除,但是数据还是存在于HDFS上的,并没有被删除。
在这里插入图片描述
在这里插入图片描述

当我们想创建一张相同的表时,可以用命令
create table emp3 as select * from emp;这个语句可以把表结构和数据都拷给emp3。执行语句时,会执行mapreduce任务。
在这里插入图片描述
在这里插入图片描述

如果我们只想复制表结构,可以用

create table emp4 like emp;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34382453/article/details/83307386