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. 《Linux命令行与shell脚本编程大全》第十四章 处理用户输入

    有时还会需要脚本能够与使用者交互.bash shell提供了一些不同的方法来从用户处获得数据, 包括命令行参数,命令行选项,以及直接从键盘读取输入的能力. 14.1 命令行参数 就是添加在命令后的数据 ...

  2. 关于回调(callback)

    如果要理解回调,需要在分同步通信.异步通信的基础上了解 举个通俗的例子: 你打电话问书店老板有没有<JS>这本书,如果是同步通信机制,书店老板会说,你稍等,"我查一下" ...

  3. 高并发场景 LVS 安装及高可用实现

    1.1 负载均衡介绍 1.1.1 负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网 ...

  4. SpringBoot错误求解决

    .   ____          _            __ _ _ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \( ( )\___ | '_ | '_| | ...

  5. C++ sqlite3解决中文排序问题

    导言:sqlite3默认的编码方式为UTF8编码,而在UTF8编码下,中文不是按照拼音顺序编码的,所以想解决中文排序问题,必须自定义排序规则,将UTF8编码转换成GB2312编码(GB2312编码中文 ...

  6. [Machine Learning]学习笔记-Neural Networks

    引子 对于一个特征数比较大的非线性分类问题,如果采用先前的回归算法,需要很多相关量和高阶量作为输入,算法的时间复杂度就会很大,还有可能会产生过拟合问题,如下图: 这时就可以选择采用神经网络算法. 神经 ...

  7. Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)

    微服务架构的应用由若干 service 组成.比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 ...

  8. NIO相关基础篇一

    转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...

  9. linux添加新硬盘并格式化

    1.查看当前系统硬盘及分区情况 (注:Linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推) 2. 初始化分区sdb为物理卷pv pvcreate /dev/sdb   ...

  10. 【OCR技术系列之二】文字定位与切割

    要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别.现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些. 当然,我们实际上要识别的图 ...