关于大数据技术我们之前提到过:HDFS和HBase(存储技术)、MapReduce和spark(运算技术)。今天要说的Hive应该属于运算技术。
既然已经有了两种互补的运算技术了(MapReduce:吞吐量大,spark:运算速度快),那为什么还要有Hive呢?要回答这个问题我们就要从数据库技术说起。
了解数据库技术的人(尤其是编程开发人员)都知道,传统的数据库访问都是通过SQL(结构化查询语言)来实现的。用SQL可以实现对数据库数据的增删改查等各种复杂操作。前面的文章我们还提到HBase就是一个适用于大数据场景的数据系统,但遗憾的师HBase并不支持SQL。这在很大程度上增大的传统开发人员的学习难度,进一个会影响大数据技术的推广和应用。在这种情况下Hive应运而生!
Hive简介
Hive 是一种大数据处理工具,使用类SQL 的HiveQL 语言实现数据查询,它底层封装了Hadoop ,所有Hive 的数据都存储在Hadoop 兼容的HDFS中。
更官方的描述:
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。
简单点说:
Hive就是一个大数据处理工具,它可以把开发者编写的SQL转换为MapReduce或Spark任务(对HDFS或HBase上的数据进行处理),这样开发者可以用更简单的方法(编写SQL语句)开发大数据程序。
Hive的优点
Hive缺点
Hive数据存储模型
数据库:创建表时如果不指定数据库,则默认为default数据库。
:物理概念,实际对应HDFS上的一个目录。
分区:对应所在表所在目录下的一个子目录。
:对应表或分区所在路径的一个文件
Hive支持的函数
数学函数,如round(),floor(),abs(),rand()等。
日期函数,如to_date(),month(),day()等。
字符串函数,如trim(),length(),substr()等
Hive基本操作
创建表
CREATE TABLE IF NOT EXISTS example.employee(
Id INT COMMENT 'employeeid',
Company STRING COMMENT 'your company',
Money FLOAT COMMENT 'work money',)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
查询
SELECT id, name FROM employee WHERE salary >= 10000;
SELECT department, avg(salary) FROM employee GROUP BY department;
SELECT id, salary, date FROM employee_a UNION ALL
SELECT id, salary, date FROM employee_b;
华为增强特性
Colocation (同分布):将存在关联关系的数据或可能要进行关联操作的数据存储在相同的存储节点上。
列加密:在创建表时指定相应的加密列和加密算法
HBase记录批量删除:remove table HBase_table where expression;
举报/反馈

程龙快序

62获赞 92粉丝
编程是未来人工智能时代的刚需
关注
0
0
收藏
分享