Hive个人心得笔记
一、Hadoop开发存在的问题
- 只能用java语言开发,如果是c语言或其他语言的程序员用Hadoop,存在语言门槛
- 需要对Hadoop底层原理,api比较了解才能做开发
- 开发调试比较麻烦
二、Hive概述
- Hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能
- 底层是将sql语句转换为MapReduce任务进行运行
- Hive提供了一系列的工具,可以用来进行数据提取、转化、加载(ETL Extract-Transform-Load ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制
- 本质上是一种大数据离线分析工具
三、Hive的HQL
- HQL - Hive通过类SQL的语法,来进行分布式的计算
- HQL用起来和SQL非常的类似,Hive在执行的过程中会将HQL转换为MapReduce去执行,所以Hive其实是基于Hadoop的一种分布式计算框架,底层仍然是MapReduce
四、特点
- 优点:
- 学习成本低,只要会sql就能用hive
- 开发效率高,不需要编程,只需要写sql
- 模型简单,易于理解
- 针对海量数据的高性能查询和分析
- HiveQL 灵活的可扩展性(Extendibility)
- 高扩展性(Scalability)和容错性
- 与 Hadoop 其他产品完全兼容
- 缺点:
- 不支持行级别的增删改
- 不支持完整的在线事务处理
- 本质上仍然是MR的执行,效率不算高
五、适用场景
- Hive 构建在基于静态(离线)批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询因此,Hive 并不适合那些需要低延迟的应用
- Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的离线批处理作业,例如,网络日志分析。