hive是由facebook开源,最初用于解决海量结构化的日志数据统计问题,它是构建在hadoop之上的数据仓库,采用HDFS数据存储,MapReduce数据计算。hive定义了一种类SQL查询语言HQL(类似SQL,但不完全相同),通常用户进行离线数据处理,可认为是一个HQL->MR的语言编译器。
一、hive应用场景及优缺点
hive多用于海量结构化日志数据分析,如统计网站一个时间段内的pv、uv,多维度数据分析。
优点:
1、简单,容易上手,提供了类SQL查询语言HQL;
2、为超大数据集设计的计算/扩展能力;
3、统一的元数据管理,可在多各组件进行数据共享;
缺点:
1、hive的HQL表达能力有限,对于迭代式算法和复杂运算无法表达;
2、hive效率较低,自动生成MapReduce作业,通常不够智能,并且调优困难,粒度较粗,可控性差;
二、hive基础架构
用户接口:包括CLI、JDBC/ODBC、WebUI
元数据存储(metastore):默认存储在自带的数据库derby中,线上使用时一般替换为mysql
驱动器(Driver):解释器、编译器、优化器、执行器
Hadoop:HDFS存储MapReduce计算
三、数据结构
四、HQL使用
1、数据定义语句(DDL)
Create/Drop/Alter Database
Create/Drop/Truncate Table
Alter Table/Partition/Column
Create/Drop/Alter View
Create/Drop/Alter Index
Create/Drop Function
Create/Drop/Grant/Revoke Roles and Privileges
Show
Describe
建表语句:
CREATE[EXTERNAL]TABLE[IF NOT EXISTS] table_name
(col_name data_type, ...)
[PARTITIONEDBY(col_name data_type, ...)]
[CLUSTEREDBY(col_name, col_name, ...) [SORTEDBY
(col_name[ASC|DESC],...)] INTO num_buckets BUCKETS]
[SKEWEDBY(col_name, col_name, ...)]
[[ROWFORMATrow_format] [STOREDASfile_format] ]
[LOCATIONhdfs_path]
ROW FORMAT DELIMITED:保留关键字
FIELDS TERMINATED BY:列分隔符
COLLECTION ITEMS TERMINATED BY :元素间分隔符
MAPKEYS TERMINATED BY:key/value对间的分隔符
LINES TERMINATED BY:行分隔符
2、数据操作语句(DML)
数据加载与插入语句
LOAD
INSERT
数据查询语句
SELECT
查看HQL执行计划
EXPLAIN
表/分区导入导出
EXPORT/IMPORT
查询语句:
SELECT[ALL|DISTINCT] select_expr,select_expr,...
FROMtable_reference
[WHEREwhere_condition]
[GROUPBYcol_list]
[CLUSTERBYcol_list
|[DISTRIBUTEBYcol_list] [SORTBYcol_list]
|[ORDERBYcol_list]]
[LIMITnumber]
3、数据格式
数据默认的存储格式为文本文件TEXTFILE,其它支持的格式有:SequenceFile、Avro、ORC/Parquet、用户自定义(InputFormat和OutputFormat),同时支持Bzip、Gzip、LZO、Snappy等压缩格式。
领取专属 10元无门槛券
私享最新 技术干货