Hive SQL之表与建表

Hive数据模型总览

       用户通过数据库访问Hive后,首先选择哪个数据库,然后在库的下面选择的是一张张表,表是管理数据的的最基本的所在,在表中的一行行记录,在现实中就是一条条数据,里面有我们的字段字段类型和它的顺序。

表Table

一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。

表包含带有数据的记录(行)。

 建表语法树(基础)

 (1)数据类型

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

(2)分隔符指定语法

ROW FORMAT DELIMITED语法用于指定字段之间等相关的分隔符,这样Hive才能正确的读取解析数据。

或者说只有分隔符指定正确,解析数据成功,我们才能在表中看到数据。

 

 LazySimpleSerDe是Hive默认的,包含4种子语法,分别用于指定字段之间、集合元素之间、map映射 kv之间、 换行的分隔符号。

在建表的时候可以根据数据的特点灵活搭配使用。

 Hive建表基础语法练习

1、数据类型

2、分隔符指定

3、默认分隔符

一、数据类型、分隔符练习

文件archer.txt中记录了手游《王者荣耀》射手的相关信息,包括生命、物防、物攻等属性信息,其中 字段之间分隔符为制表符\t,要求在Hive中建表映射成功该文件。

(1/3)数据文件

字段含义:id、name(英雄名称)、hp_max(最大生命)、mp_max(最大法力)、attack_m(最高物攻) 、defense_max(最大物防)、attack_range(攻击范围)、role_main(主要定位)、role_assist(次要定位) 。

分析一下:字段都是基本类型,字段的顺序需要注意一下。

字段之间的分隔符是制表符,需要使用row format语法进行指定。

 使用DataGrip 创建一个工程

首先new一个project

project       Hive-Darcy  在当前窗口打开

 

在桌面上创建一个文件夹 Hive-Darcy后面需要关联本地目录到工程中 

 

 连接成功后显示

创建一个新的文件

 创建完成后需要配置连接到Hive

 更换驱动,点击Dirver (若没有自己的驱动请谨慎删除系统的驱动

 接着会出现下方页面,先点击箭头1,在点击箭头2进行删除

接着点击+号,选择自己的驱动

在自己的目录下找到hive3的驱动点击OK。 

如果箭头1所指的地方未变红,则成功,接着点击箭头2所指的箭头。返回继续配置。 

先修改名称,再写服务地址node1.itcast.cn,再写用户名,然后再点击Test Connection进行测试,如果没有问题就点击Apply,OK就配置好了。

 右键新建一个文件

创建 1.creat文件 

 

 这里注意 笔者在第一次创建的时候,写代码总是报错,后来发现是右上方的配置未配置好

 选择 Apach Hive

输入下列内容

--1,创建一张表 ,将射手结构化数据文件在Hive中映射成功
--表名
--字段  名称  类型  顺序
-- 字段之间的分割符需要指定
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 "次要定位"
)
--指定分割符
row format delimited
fields terminated by "\t";--字段黄之间的分割符就是tab键 制表符

选择会话

 

 选择创建在哪个库下

 选中,接着进行运行。

点开右方的datebase可以查看建表是否成功 。

 

 建表成功后还需要将文件上传到表对应的目录下

  接着使用 select* from  查看表 t_archer

 

至此 将一个结构化的表映射为一张表。


版权声明:本文为m0_55674689原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。