1.简介

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

2.应用

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

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

3.使用方法及技巧

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

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

3)HiveQL书写时遇到Join语句,当尽量遵循先过滤后Join

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

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

4.建议使用方式

在项目做技术选型时,如果有大量结构化数据进行离线计算,可以采用Hive来做计算,原因如下:

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

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

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

个人在使用hive仍存在问题希望各位能够给予解答将不胜感激:

  在使用hive与hbase表建立映射关系时,可以实现hive分区吗?如何实现?

  

Hive实际应用小结的更多相关文章

  1. 【Hive六】Hive调优小结

    Hive调优 Hive调优 Fetch抓取 本地模式 表的优化 小表.大表Join 大表Join大表 MapJoin Group By Count(Distinct) 去重统计 行列过滤 动态分区调整 ...

  2. Hadoop Hive概念学习系列之hive的正则表达式初步(六)

    说在前面的话 hive的正则表达式,是非常重要!作为大数据开发人员,用好hive,正则表达式,是必须品! Hive中的正则表达式还是很强大的.数据工作者平时也离不开正则表达式.对此,特意做了个hive ...

  3. 【Hadoop】HIVE 小结概览

    一.HIVE概览小结 二.HIVE安装 Hive只在一个节点上安装即可 .上传tar包 .解压 tar -zxvf hive-.tar.gz -C /cloud/ .配置mysql metastore ...

  4. Hive - 建表和加载数据指令小结 以及使用Load data指令的注意事项

    类似Mysql的数据库概念: hive> CREATE DATABASE cui; hive> USE cui; 创建表: CREATE TABLE test( first STRING, ...

  5. hive 内部表和外部表的区别和理解

    1. 内部表 create table test (name string , age string) location '/input/table_data'; 注:hive默认创建的是内部表 此时 ...

  6. 【转】Hive的insert操作

    insert 语法格式为: 1. 基本的插入语法: insert overwrite table tablename [partition(partcol1=val1,partclo2=val2)] ...

  7. hive中rcfile格式(收藏文)

    首先声明,此文是属于纯粹收藏文,感觉讲的很不错. 本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在MapReduce环境下的大规模数据分析中扮 ...

  8. Hive与HBase区别

    对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的.本文将尝试从其各自的定义.特点.限制.应用场景等角度来进行分析,以作抛砖引玉之用. ====Hive是什么?Apache Hiv ...

  9. Hadoop、Pig、Hive、Storm、NOSQL 学习资源收集

    (一)hadoop 相关安装部署 1.hadoop在windows cygwin下的部署: http://lib.open-open.com/view/1333428291655 http://blo ...

随机推荐

  1. Android 使用GangSDK创建第三方家族公会系统经验分享

    由于需要对之前的游戏加入一个家族系统,想到这块儿可能会有大量的工作需要自己做,就偷了个懒去网上搜罗了一波,有没有类似现成的系统?结果让我惊奇的发现,目前市面上居然真的有类似的服务,虽然是小公司开发的, ...

  2. Spring Boot 的Maven多模块开发web项目使用外部容器进行部署

    Spring Boot中自带有Tomcat容器,因此Spring Boot项目只需要运行main函数,就可以运行,但是以往的web项目,我们习惯于使用自己安装的Tomcat运行或者使用Tomcat.J ...

  3. 【原创】用python写的一个监测本地进程CPU占用的程序

    #coding=utf-8import psutilimport sysimport timetry:#输入需要监测的进程PID PID = raw_input('ProcessPID: ') def ...

  4. #openstack centos6 centos7 kvm镜像制作

    #openstack centos6 centos7 kvm 镜像制作 openstack windows 2008镜像 制作 http://www.cnblogs.com/elvi/p/800129 ...

  5. JavaWeb框架_Struts2_(七)----->文件的上传和下载

    这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 1. 章节目录 Struts2文件上传 单文件上传 拦截器实现文件过滤 文件上传常量 ...

  6. 用Redis轻松实现秒杀系统

    秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题.对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招,不论秒杀时负载多大,都能轻松应 ...

  7. java 事件处理

    Java事件处理机制:EventObject类作为描述事件信息的事件信息类的基类,由EventListener接口派生新的接口或类来作为事件接收方的类,再定义事件源类. 事件信息类的构造方法必须含有事 ...

  8. css3的动画特效--元素旋转

    开发中,视觉要你实现一个元素的旋转问题,比如说如下图所示: 思路:首先动画动效肯定离不开anmimation动画. 和transition动画一样,animation动画也是CSS3动画的一种,这类动 ...

  9. 运行期以索引获取tuple元素-C++11之2

    //运行期以索引获取tuple元素-C++11之2 //需支持C++11及以上标准的编译器,VS2017 15.5.x.CodeBlocks 16.01 gcc 7.2 //参见<深入应用C++ ...

  10. sqlserver2005公布与订阅配置步骤

    1,新建公布 前提条件:第一要调通网络,在sqlserver configuration manager 中选择mssqlserver的协议把named pipes改为启用.第二要建立一个目录D:\b ...