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

 

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

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当执行HiveSQL建表命令报错时,可能有几个原因导致: 1. 列名重复:根据引用中的内容,建表语句中指定了两个相同的列名,这可能会导致建表失败。请确保列名的唯一性并重试建表命令。 2. 元数据服务器配置错误:根据引用中的内容,当Hive执行建表命令时,可能会连接到远程的元数据服务器,而不是默认的本地数据库。如果你的MySQL数据库不在本地,你需要在Hive的配置文件中配置元数据服务器的地址。确保配置正确后,重启Hive服务并再次尝试执行建表命令。 3. Orc文件版本不兼容:根据引用中的内容,当使用CDH-Hive2.1.1版本读取Orc文件时,可能会报错。可能是由于Orc文件的版本与Hive不兼容导致的。你可以尝试替换Orc文件或升级Hive版本来解决这个问题。 综上所述,建议你检查列名是否重复,配置正确的元数据服务器地址,并考虑升级Hive版本或替换Orc文件来解决建表报错的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [记一次hive建表报错](https://blog.csdn.net/weixin_39445556/article/details/103200509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [hive执行建表命令报错](https://blog.csdn.net/weixin_45567175/article/details/102716671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [cdh-hive2.1.1版本orc格式表读取包数组越界替换包](https://download.csdn.net/download/weinierzui/85404988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油豆皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值