Hive实际应用小结

1.简介算法

Hive是数据仓库平台,构建在Hadoop之上用来处理结构化数据。Hive是一个SQL解析引擎,可以将SQL语句转化成MapReduce做业并在Hadoop上执行,从而使得查询和分析更加方便。
Hive是Facebook开发。2008年贡献给Apache,成为开源项目。shell

 

2.应用并发

由上图可见,hive的诞生能够很下降开发人员运用mapreduce计算框架的门槛,经过熟悉的SQL语句来实现复杂的mapreduce代码的编写,从而下降开发难度提升开发效率。框架

Hive适用于海量结构化数据的离线分析,若是有需求是是须要统计计算大数据量并且对于时效性没有太高要求的状况下,建议采用Hive来作处理。不适用于复杂的机器学习算法,由于机器学习算法大多涉及大量的迭代计算,而hive默认状况下底层封装的计算框架是MapReduce,计算效率比较低下不适合复杂的计算,(Hive on Spark另议),由于底层的计算框架是mapreduce 因此也不适合交互式实时查询,有交互式实时查询建议使用Impala。机器学习

3.使用方法及技巧函数

1)使用hive -e 将SQL写入shell脚本进行调用,如进行一些数据的定时汇总。使用定时器进行shell脚本的调用,可使用oozie或者crontab调用hive脚本oop

2)当多个SQL并发执行占用资源过多时,能够经过设置HiveQL语句的优先级来告诉yarn优先给那个MapReduce分配资源(HiveQL底层转化成MapReduce执行),使用语句 SET mapreduce.job.priority=HIGH;设定任务的优先级是高,总共有四个级别,此处再也不赘述。学习

3)HiveQL书写时遇到Join语句,当尽可能遵循先过滤后Join大数据

4)避免使用in ,not in语句blog

5)当多表join时。应当选择合适的表做为主表。

4.建议使用方式

在项目作技术选型时,若是有大量结构化数据进行离线计算,能够采用Hive来作计算,缘由以下:

1)既然是离线分析,就不会太在意时效性,因此没必要使用SparkSQL,impala这种消耗内存来更快计算的技术,当有需求是须要短期内返回计算结果的,hive不适用。

2)对于结构化数据处理使用SQL代替繁琐的mapreduce代码省时省力。

3)支持udf,udaf,udtf。对于复杂逻辑能够写Java代码实现做为自定义函数去调用

我的在使用hive仍存在问题但愿各位可以给予解答将不胜感激:

  在使用hive与hbase表创建映射关系时,能够实现hive分区吗?如何实现?