1.概述
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制
Hive 定义了简单的类SQL查询语言HQL,它允许熟悉SQL的用户查询数据,也允许熟悉Map/Reduce的开发者开发自定义的mapper和 reducer来处理内建的mapper和reducer无法完成的复杂的分析工作
Hive被设计用来处理大规模数据,因此提交查询到返回结果所需的时间可能很长,所以,Hive最适合用来维护海量数据,对数据进行数据挖掘,给出意见和报告
不同于其他传统数据库的写时模式(即在数据写入数据库时对模式进行检查),Hive在数据加载时不会进行数据模式检查,而是在查询时进行,也就是读时模式
2.常用概念
1)內表、外表:
关键字external 区分,外表无控制权,外表用Location 确定路径;內表drop 会同时drop 元数据和关联数据;外表只是drop 元数据;对于元数据有独立的关系型数据库维护(MYSQL)
3.使用
- desc
- hive strict
- 调用Hive时,添加-S(大写)参数,可以开启静默模式
- 以--开头的行会被注释掉
-mysql中sql执行顺序,hive可以参考:
1):FROM
2):ON
3):OUTER(JOIN)
4):WHERE
5):GROUPBY
6):CUBE|ROLLUP
7):HAVING
8):SELECT
9):DISTINCT
10):ORDERBY
11):TOP
4.数据加工
对数据进行深加工,一般使用transform、udf和reflectUDF三种方法
- Transform能在map和reduce阶段运行,输入为map或reduce阶段的所有数据,输出即为该阶段的输出。方便、快捷,只要一个程序能从标准输入读数据并输出到标准输出,就可以通过transform调用,能完成复杂的逻辑数据处理任务,成本低