初识hive

Posted Hadoop大数据之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识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计算


三、数据结构



类型 解释 例子
TINYINT

1byte有符号整型

20

SMALLINT

2byte有符号整型

20

INT

4byte有符号整型

20

BIGINT

8byte有符号整型

20

BOOLEAN 布尔类型 true
FLOAT 单精度浮点型 3.14159
DOUBLE

双度浮点型

3.14159

STRING(CHAR,VARCHAR)

字符串

‘Nowisthetime’,“forall”
TIMESTAMP(Date)

整型、浮点型或字符串

1327882394(Unixepoch

seconds),

1327882394.123456789(Unix

epoch

secondsplusnanoseconds)

BINARY

字节数组


STRUCT

与C/C++中的结构体类似,可通过

“.”访问每个域的值,比如

STRUCT{firstSTRING;last

STRING},可通过name.first访问第

一个成员。

struct('John','Doe')

MAP

存储key/value对,可通过[‘key’]获

取每个key的值,比如‘first’→‘John’

and‘last’→‘Doe’,可通过name[‘last’]

获取lastname。

map('first','John','last','Doe')

ARRAY

同种类型的数据集合,从0

比如[‘John’,‘Doe’],,可通过

name[1]获取“Doe”。

array('John','Doe')


四、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, ...)

[PARTITIONED BY (col_name data_type, ...)]

[CLUSTERED BY (col_name, col_name, ...) [SORTED BY

(col_name[ASC|DESC],...)] INTO num_buckets BUCKETS]

[SKEWED BY (col_name, col_name, ...)]

[[ROW FORMAT row_format] [STORED AS file_format] ]

[LOCATION hdfs_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, ...

FROM table_reference

[WHERE where_condition]

[GROUPBY col_list]

[CLUSTERBY col_list

|[DISTRIBUTE BY col_list] [SORT BY col_list] 

|[ORDER BY col_list] ]

[LIMIT number]

3、数据格式

数据默认的存储格式为文本文件TEXTFILE,其它支持的格式有:SequenceFile、Avro、ORC/Parquet、用户自定义(InputFormat和OutputFormat),同时支持Bzip、Gzip、LZO、Snappy等压缩格式。

以上是关于初识hive的主要内容,如果未能解决你的问题,请参考以下文章

初识Hive

初识Hive

初识hive

Hive学习之路 Hive初识

Hive初识

Hive学习之路Hive初识