📅  最后修改于: 2023-12-03 15:01:08.695000             🧑  作者: Mango
Hive是一个数据仓库基础设施,它能够通过类SQL语言(HiveQL)将结构化的数据映射到Hadoop的分布式文件系统上进行处理。Hive能够建立在Hadoop的MapReduce处理之上,可以将HiveQL语句转换成MapReduce任务并进行分布式处理。
灵活性:Hive可以处理以及转换大型数据集,具有非常强的数据灵活性,可以处理多种格式的数据。
易用性:通过类SQL语言可以描述要执行的操作,避免了许多复杂的MapReduce编程。
扩展性:Hive可以与Hadoop生态系统中的其他工具集成,例如HBase等。
HiveQL提供了与SQL类似的语法,是一门基于Hadoop的SQL语言。以下是HiveQL的一些关键字:
SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN, LEFT OUTER/RIGHT OUTER/FULL OUTER JOIN, UNION, ORDER BY, LIMIT, TABLE, DATABASE
以下是一个示例HiveQL查询:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s)
LIMIT number;
以下是Hive的一些常见用法:
CREATE DATABASE IF NOT EXISTS database_name;
USE database_name;
CREATE TABLE IF NOT EXISTS table_name (
column1 datatype1,
column2 datatype2,
.....
columnN datatypeN,
) [COMMENT 'table_comment']
[PARTITIONED BY (col_name datatype, ...)]
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC]), ...]]
[INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION 'hdfs_path']
[TBLPROPERTIES (property_name=property_value, ...)]
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE table_name [PARTITION (partcol1=val1, partcol2=val2 ...)];
SELECT column_name(s) FROM table_name [WHERE condition] [LIMIT number];
INSERT INTO TABLE table_name [PARTITION (partcol1=val1, partcol2=val2 ...)] VALUES (value1, value2, ...);
UPDATE table_name SET column_name = value [WHERE condition];
DELETE FROM table_name [WHERE condition];
Hive是一个十分强大的数据仓库基础设施,能够通过类SQL语言将结构化的数据映射到Hadoop的分布式文件系统上进行处理,并能够建立在Hadoop的MapReduce处理之上。通过HiveQL语言能够方便地处理大量庞大且不规则的数据集。