【研发工具】Hive基础

Hive 简介

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。


使用Hive的原因

  • 操作接口采用类SQL语法,提供快速开发的能力
  • 避免了去写MapReduce,减少开发人员的学习成本
  • 扩展功能很方便

Hive的特性

  • 可扩展:Hive可以自由的扩展集群的规模,一般情况下不需要重启服务
  • 延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数,就像SQL中的UDF
  • 容错性:良好的容错性,节点出现问题SQL仍可完成执行,分布式存储的优点

容错性的原因:MapRuduce的整个编配工作由主节点控制,一般每份mapper的输入数据会同时分发到多个节点形成多分副本,用于事务的失效处理,每个节点必须与主节点通信,表示自己工作正常。如果某节点失效或则工作异常,主节点将重启该节点或者将该节点移出可用机器池。
注:

  • 在任何时候,每个mapper和reducer间都不进行通信,每个节点只处理自己的事务,并且在本地分配的数据集上运算。

Hive与Hadoop的关系

Hadoop简介

Hive与Hadoop的关系


MapRuduce学习要点

  • 主节点控制MapReduce 的作业流程
  • MapReduce的作业可以分成map任务和reduce任务
  • map任务与reduce任务之间不做数据交流
  • 在map和reduce阶段中间有一个sort或combine阶段
  • 数据被重复存放在不同的机器上,以防某个机器失效
  • mapper和reducer传输的数据形式为key/value对

Hive命令

命令选项

  • -i: 初始化SQL文件
  • -e 'quoted query string': 运行引号内sql查询语句
  • -f filename: 从文件中运行sql语句
  • -S: 无声模式在互动的Shell,只有数据发出
  • –h: 查看应用的帮助文档
  • -hiveconf: 设置hive/hadoop的配置变量
HIVE_HOME/bin/hive -S -e ' select count(*) from c02_clickstat_fatdt1' > a.txt

HIVE_HOME/bin/hive -f /home/my/hive-script.sql

Hive中的连接操作

  • 只支持相等JOIN。
  • 多表连接当使用不同的列进行Join时,会产生多个MapReduce作业。
  • 最后的表的数据是从流中读取,而前面的会在内存中缓存,因此最好把最大的表放在最后。

排序

  • order by

跟传统的 sql 中的 order by 作用相同 ,对查询的结果做一次全局排序,因此无论有多少个 map,order by 的数据都会放到一个 reducer 中去处理,会消耗很多时间也浪费了资源。

  • sort by

在每一个reducer上都会做排序,保证了局部有序,但是不能保证所有数据都有序,可以为接下来的全局排序提高不少效率(做一次归并排序)

  • distribute by

控制map的输出在reducer上如何划分

select mid ,money,name from store distribute by mid sort by mid

mid相同的数据会被送到一个reducer上去处理(distribute by mid),然后在每一个reducer上会按照mid排序(sort by mid)

  • cluster by

功能就是distribute by 与 sort by的结合

select mid ,money,name from store cluster by mid

cluster by指定的列只能降序,不能指定asc,desc

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、介绍 Hive起源于Facebook,它是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张...
    任目达阅读 638评论 0赞 0
  • 正文目录 1、表层面 1.1 利用分区表优化 1.2 利用分桶表优化 1.3 选择合适的文件存储格式 1.4 选择...
    扎西的德勒阅读 981评论 0赞 1
  • Hive的基本简介 1)Hive是什么?Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件...
    bigdata三十五画生阅读 760评论 0赞 1
  • Hive是将一个现有的数据基础架构转移到Hadoop上,而这个基础架构是基于传统关系型数据库和结构化查询语句的(S...
    w未然阅读 611评论 0赞 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 11,083评论 0赞 11

友情链接更多精彩内容