Hive入门之基础知识(一)之杂七杂八

随笔总结一些关于Hive的杂七杂八的知识点

Hive出现的原因

从一个基于传统关系型数据库和结构化查询语言的数据基础架构转移到Hadoop上,使用HQL查询Hadoop中的数据。

Hive与传统关系型数据库的区别

Hive不支持记录级别的更新、插入和删除操作。执行延迟大,不支持事务。

Hive组成模块

在这里插入图片描述
所有的命令和查询都会进入到驱动模块driver中,driver对输入进行解析和编译,以及对需求的计算进行优化,然后启动MR来执行job。Hive本身不会生成MR的程序,而是通过一个表示”job执行计划“的XML文件驱动执行内置的原生的MR模块。
Hive通过和jobtracker进行通信来初始化MR任务。

Hive安装目录

在这里插入图片描述

Hive常用的命令行执行参数

Hive -e执行完一条命令后立刻退出CLI
Hive -S开启静默模式,去掉OK等无关紧要的输出信息
Hive -f文件名,指定文件中的一个或多个查询语句。

Hive的基本数据类型

在这里插入图片描述
在这里插入图片描述
其中时间戳可以是整数、浮点数、字符串,其表示的是UTC时间。

类型转换的用法:
cast(user_id AS STRING) as user_id_string
Hive中的集合数据类型

Hive中的集合数据类型:map、struct、array
为什么Hive支持集合数据类型,而大多数传统关系型数据库不支持:关系型数据库通过外键将多个表进行关联,当数据量很大时,根据外键进行关联造成的磁盘间的寻址操作将产生很高的代价。

Hive的读时模式

传统的关系型数据库是写时模式,在数据写入时对模式进行检查。
对于Hive要查询的数据,有很多种方式对其进行创建,修改,损坏,因此Hive采用读时模式,在查询时进行验证,尽量修复错误或者赋空值。

Hive查看表信息
DESCRIBE  表名
DESCRIBE EXTENDED 表名
DESCRIBE FORMATTED 表名

都可以查询表的详细信息,信息完整程度由上到下逐渐增加,DESCRIBE FORMATTED的数据最完整。

外部表和内部表

内部表:也叫管理表,Hive会控制数据的生命周期,删除一个内部表时,Hive也会删除表中的数据。内部表也不便于和其他工作共享数据。
外部表:删除表并不会删除表中的数据,但是描述表的元数据信息会被删除。有些HQL的语法结构也不适用于外部表。

CREATE EXTERNAL TABLE 目标表 LIKE 源表   -- 生成的表是外部表
CREATE TABLE 目标表 LIKE 源表  -- 如果源表是外部表,则目标表也是外部表;如果源表是内部表,目标表也是内部表

Hive表的存储格式

默认情况下,Hive采用的存储格式为文本文件格式(TEXTFILE),在这种格式下,每一行被认为是一个单独的记录。
记录的解析由序列化器,反序列化器(SerDe)来控制。
Hive使用一个inputformat对象将输入流分割成记录,使用outputformat对象将记录格式化为输出流,使用SerDe在读数据时将记录解析成列,写数据时将列编码成记录。

Hive防止表被删除或查询

ALTER TABLE test ENABLE NO_DROP  // 防止被删除
ALTER TABLE test ENABLE OFFLINE  // 防止被查询

若要允许被删除或查询,只需把 enable 改为 disable

索引

Hive没有关系型数据库中键的概念,只有有限的索引功能。一张表的索引数据存放在另一张表中。
建立索引可以帮助剪裁掉一张表的一些数据块,减少MR任务的数据输入量。
通过explain+SQL语句可以查看是否使用了索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值