Hadoop之hive学习

本文详细介绍了Hive在解决大数据存储问题上的作用,及其与传统SQL的区别。Hive支持复杂数据类型如Map和Struct,并且在语法上对JOIN和INSERT操作有特定限制。Hive的数据组织形式包括表、区和桶,数据序列化和反序列化通过SerDe接口实现。此外,Hive支持多种文件格式,并拥有包括CLI、Web界面和JDBC/ODBC在内的多种交互方式。Hive的架构包含元数据管理、查询编译器和执行引擎等组件。
摘要由CSDN通过智能技术生成

1. hive是针对什么问题提出的? 之前有什么解决方案吗?

超大结构化数据集,超出了一般MPP 的存储能力。

MPP海量并行处理数据库的强项在于CPU,实时处理能力强,但其空间比较紧张;而hadoop的存储能强,但cpu的实时处理能力比较弱。Hive是一个基于hadoop的数据仓库。

所以,二者是一个互补的关系。并且,逐渐的,二者会相互融合。


2. hive在数据类型上与普通的SQL有什么区别?

hive除了支持普通的Integer(从8字节到1字节)、Float(float与double)、String 内置类型外

hive还支持 Map、Structure、List,这些复杂的数据类型。

如 list<map<string, struct<p1:int, p2:int>>> 一个嵌套多层的复杂数据结构。


3. hive在语法上与标准的SQL有什么区别? 以及原由是什么?

1)多表之间的join操作,只支持 等号 = 条件,且语法格式如下:

SELECT t1.a1 as c1, t2.b1 as c2
FROM t1 JOIN t2 ON (t1.a2 = t2.b2);


而不是传统的格式:

SELECT t1.a1 as c1, t2.b1 as c2
FROM t1, t2
WHERE t1.a2 = t2.b2


2)hive不支持将数据插入现有的表或分区中,仅支持覆盖重写整个表,示例如下:

INSERT OVERWRITE TABLE t1
SELECT * FROM t2;

3)hive不支持INSERT INTO, UPDATE, DELETE操作,这样的话,就不要很复杂的锁机制来读写数据。

INSERT INTO syntax is only available starting in version 0.8。INSERT INTO就是在表或分区中追加数据。


4)hive支持嵌入mapreduce程序,来处理复杂的逻辑

如:

FROM (
MAP doctext USING 'python wc_mapper.py' AS (word, cnt)
FROM docs
CLUSTER BY word
) a
REDUCE word, cnt USING 'python wc_reduce.py';

--doctext: 是输入

--word, cnt: 是map程序的输出

--CLUSTER BY: 将wordhash后,又作为reduce程序的输入


并且map程序、reduce程序可以单独使用,如:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值