创建数据库和表是学习大数据必备的知识,那么数据库和表如何创建呢?使用Impala和Hive创建数据库和表又有什么区别呢?

数据库和表通过HiveQL或ImpalaSQL的DDL语句进行创建和管理,和标准SQL DDL非常相似。但是它们又有各自不同的语法,这个差异会在后面具体提出来,如果没有提到就是两者相通的。

一、创建数据库

Hive和Impala数据库就是简单的命名空间,用来统一管理一部分表和视图。数据库在HDFS上的体现就是一个建立在表上的目录。

(1)创建新的数据库:

wKiom1hrT0niH41fAAAolhxGPII677.png-wh_50

这是和所有关系型数据库相通的一个命令,执行此操作就会添加数据库定义到元数据库,并且在HDFS里创建存储目录,比如:/user/hive/warehouse/loudacre.db

(2)可以带条件创建新数据库

wKioL1hrT1TwSlsqAAAIC3atPFM513.png-wh_50

这是一个友好的写法,就是当你要把创建数据库的动作放到脚本中去执行,前提必须保证脚本可以重复执行,不会出现任何失败,所以可以加IF NOT EXISTS。当这个数据库不存在的时候,这个语句可以正常的运行,去创建一个数据库;如果存在的话,就进行下一步。放在脚本中执行,不需要担心执行会失败,最起码在这一步执行中是不会失败的。

(3)移除数据库

移除数据库和创建类似,只是替换CREATE为DROP

经典解密数据库和表的创建_第1张图片

但是如果数据库中包含一些表的话,那么上述命令的执行就会失败。当然有些情况下,我们需要直接执行这个命令,然后同时让它把这个数据库下面所有的表和结构信息全部删除,那么我们执行如下命令:

wKioL1hrT22zDpP5AABH2Drgmf4369.png-wh_50

二、创建表

(1)数据类型:

当我们去创建一个表的时候,我们需要去指定列,那么这个列也有自己特定的数据类型,在我们创建表的时候需要去指定这个数据类型,对不符合的类型的数据将会返回NULL。常见数据类型:

经典解密数据库和表的创建_第2张图片

在这里重点强调Hive支持支持复杂数据类型,比如maps和arrays,而Impala根据版本不同会不一样。

(2)基本语法:

经典解密数据库和表的创建_第3张图片

当我们执行了这样一个操作,它会在HDFS的数据仓库目录创建一个子目录。如果你没有指定数据库名,它会在/user/hive/warehouse/这个默认的数据仓库目录下有tablename这样一个表的目录;但是如果你创建一个DB,那么会在DB下面去创建子目录。具体如下:

默认数据库:
 /user/hive/warehouse/tablename

命名的数据库:
 /user/hive/warehouse/dbname.db/tablename

(3)创建表的类型:

经典解密数据库和表的创建_第4张图片

在hive里面是以什么来判断数据呢?它是以指定行或列的分隔来去判断我们的数据有几条,有几个字段,所以我们必须指定行或列的分隔

经典解密数据库和表的创建_第5张图片

(4)数据分隔

经典解密数据库和表的创建_第6张图片

(5)数据存储

经典解密数据库和表的创建_第7张图片

以上就是根据自身经验分享的表和数据库的创建过程,如果有疑问可以关注“大数据cn”微信公众号来提问。