初识hive

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等压缩格式。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181006G0CIUO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券