初识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的主要内容,如果未能解决你的问题,请参考以下文章