天天看点

Hadoop学习(10)—— Hive SQL语言:DDL建库、建表

作者:技术闲聊DD

1 Hive SQL之数据库与建库

1.1 Hive数据模型总览

Hadoop学习(10)—— Hive SQL语言:DDL建库、建表

1.2 SQL中DDL语法的作用

  • 数据定义语言 (Data Definition Language, DDL),是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database、table等。
  • DDL核心语法由CREATE、ALTER与DROP三个所组成。DDL并不涉及表内部数据的操作。

1.3 创建数据库

  • 在Hive中,默认的数据库叫做default,存储数据位置位于HDFS的/user/hive/warehouse下。
  • 用户自己创建的数据库存储位置是/user/hive/warehouse/database_name.db下。
  • 创建数据库语法

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name

[COMMENT database_comment]

[LOCATION hdfs_path]

[WITH DBPROPERTIES (property_name=property_value, ...)];

COMMENT:数据库的注释说明语句

LOCATION:指定数据库在HDFS存储位置,默认/user/hive/warehouse/dbname.db

WITH DBPROPERTIES:用于指定一些数据库的属性配置。

案例:

create database if not exists hive_test
comment "hive测试库"
with dbproperties ('createdBy'='Allen');           
Hadoop学习(10)—— Hive SQL语言:DDL建库、建表

注意:如果需要使用location指定路径的时候,最好指向的是一个新创建的空文件夹。

1.4 选择特定数据库

切换当前会话使用哪一个数据库进行操作。

use hive_test;           

1.5 删除数据库

默认行为是RESTRICT,这意味着仅在数据库为空时才删除它。

要删除带有表的数据库(不为空的数据库),我们可以使用CASCADE进行强制删除。

2 Hive SQL之表与建表

2.1 表Table

建表语法树(基础)

CREATE TABLE [IF NOT EXISTS] [db_name.]table_name

(col_name data_type [COMMENT col_comment], ... )

[COMMENT table_comment]

[ROW FORMAT DELIMITED …];

数据类型

  • Hive数据类型指的是表中列的字段类型;
  • 整体分为两类:原生数据类型(primitive data type)和复杂数据类型(complex data type)。
  • 最常用的数据类型是字符串String和数字类型Int。

分隔符指定语法

ROW FORMAT DELIMITED语法用于指定字段之间等相关的分隔符,这样Hive才能正确的读取解析数据。或者说只有分隔符指定正确,解析数据成功,我们才能在表中看到数据。

Hadoop学习(10)—— Hive SQL语言:DDL建库、建表
  • LazySimpleSerDe是Hive默认的,包含4种子语法,分别用于指定字段之间、集合元素之间、map映射 kv之间、换行的分隔符号。
  • 在建表的时候可以根据数据的特点灵活搭配使用。
Hadoop学习(10)—— Hive SQL语言:DDL建库、建表

Hive默认分隔符

  • Hive建表时如果没有row format语法指定分隔符,则采用默认分隔符;
  • 默认的分隔符是'\001',是一种特殊的字符,使用的是ASCII编码的值,键盘是打不出来的。
  • 在vim编辑器中,连续按下Ctrl+v/Ctrl+a即可输入'\001' ,显示^A。
  • 在一些文本编辑器中将以SOH的形式显示:

2.2 案例

建表

--创建数据库并切换使用
create database if not exists hive_test;
use hive_test;
--ddl create table
create table t_archer(
id int comment "ID",
name string comment "英雄名称",
hp_max int comment "最大生命",
mp_max int comment "最大法力",
attack_max int comment "最高物攻",
defense_max int comment "最大物防",
attack_range string comment "攻击范围",
role_main string comment "主要定位",
role_assist string comment "次要定位"
) comment "王者荣耀射手信息"
row format delimited
fields terminated by "\t";           

建表成功之后,在Hive的默认存储路径下就生成了表对应的文件夹;

把archer.txt文件上传到对应的表文件夹下。

#执行命令把文件上传到HDFS表所对应的目录下
hadoop fs -put archer.txt /user/hive/warehouse/hive_test.db/t_archer           
Hadoop学习(10)—— Hive SQL语言:DDL建库、建表

3 show语法功能

  • Show相关的语句可以帮助用户查询相关信息。
  • 比如我们最常使用的查询当前数据库下有哪些表 show tables。
1、显示所有数据库 SCHEMAS和DATABASES的用法 功能一样
show databases;
show schemas;
2、显示当前数据库所有表
show tables;
SHOW TABLES [IN database_name]; --指定某个数据库
3、查询显示一张表的元数据信息
desc formatted t_archer;           
下一篇: PDB调试

继续阅读