1. Hive是什么

Hive是基于Hadoop的数据仓库解决方案。由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性。这是来自官方的解释。

简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。

先上一张经典的Hive架构图:

Hive架构图

如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。
在使用过程中,只需要将Hive看做是一个数据库就行,本身Hive也具备了数据库的很多特性和功能。HIVE是一个不完整的数据库,注重查询,没法修改,延迟较大。

2. Hive擅长什么

Hive可以使用HQL(Hive SQL)很方便的完成对海量数据的统计汇总,即时查询和分析,除了很多内置的函数,还支持开发人员使用其他编程语言和脚本语言来自定义函数。

但是,由于Hadoop本身是一个批处理,高延迟的计算框架,Hive使用Hadoop作为执行引擎,自然也就有了批处理,高延迟的特点,在数据量很小的时候,Hive执行也需要消耗较长时间来完成,这时候,就显示不出它与Oracle,Mysql等传统数据库的优势。

此外,Hive对事物的支持不够好,原因是HDFS本身就设计为一次写入,多次读取的分布式存储系统,因此,不能使用Hive来完成诸如DELETE、UPDATE等在线事务处理的需求

因此,Hive擅长的是非实时的、离线的、对响应及时性要求不高的海量数据批量计算,即席查询,统计分析

3. Hive的数据单元

  • Databases:数据库。概念等同于关系型数据库的Schema,不多解释;
  • Tables:表。概念等同于关系型数据库的表,不多解释;
  • Partitions:分区。概念类似于关系型数据库的表分区,没有那么多分区类型,只支持固定分区,将同一组数据存放至一个固定的分区中。
  • Buckets (or Clusters):分桶。同一个分区内的数据还可以细分,将相同的KEY再划分至一个桶中,这个有点类似于HASH分区,只不过这里是HASH分桶,也有点类似子分区吧。

4. Hive的数据类型

既然是被当做数据库来使用,除了数据单元,Hive当然也得有一些列的数据类型。这里先简单描述下,后续章节会有详细的介绍。

4.1 原始数据类型

  • 整型

    • TINYINT — 微整型,只占用1个字节,只能存储0-255的整数。
    • SMALLINT– 小整型,占用2个字节,存储范围–32768 到 32767。
    • INT– 整型,占用4个字节,存储范围-2147483648到2147483647。
    • BIGINT– 长整型,占用8个字节,存储范围-2^63到2^63-1。
  • 布尔型
    • BOOLEAN — TRUE/FALSE
  • 浮点型
    • FLOAT– 单精度浮点数。
    • DOUBLE– 双精度浮点数。
  • 字符串型
    • STRING– 不设定长度。

4.2 复合数据类型

    • Structs:一组由任意数据类型组成的结构。比如,定义一个字段C的类型为STRUCT {a INT; b STRING},则可以使用C.a和C.b来获取其中的元素值;
    • Maps:和Java中的Map没什么区别,就是存储K-V对的;
    • Arrays:就是数组而已;

Hive入门笔记---1.Hive简单介绍的更多相关文章

  1. Hive入门笔记---2.hive函数大全

    Hive函数大全–完整版 现在虽然有很多SQL ON Hadoop的解决方案,像Spark SQL.Impala.Presto等等,但就目前来看,在基于Hadoop的大数据分析平台.数据仓库中,Hiv ...

  2. hadoop笔记之Hive入门(什么是Hive)

    Hive入门(一) Hive入门(一) 什么是Hive? Hive是个数据仓库,数据仓库就是数据库,但又与一般意义上的数据库有点区别 实际上,Hive是构建在hadoop HDFS上的一个数据仓库. ...

  3. [Docker]学习笔记--简单介绍

    学习docker已经有一段时间了,一直没有静下心来好好总结一下. 最近用docker搭了一整套Gitlab的持续集成环境.(会在下一篇中详细的讲解具体步骤,敬请期待) 感觉是时候写点东西和大家一起分享 ...

  4. 学习笔记-React的简单介绍&工作原理

    一.React简单介绍 1.React起源于Facebook内部项目,与2013年5月 2.是一个用于构建用户界面的JavaScript库 二.React特点 1.声明式设计-React采用声明范式, ...

  5. apicloud入门学习笔记1:简单介绍

    官网地址:https://www.apicloud.com/ 新手开发指南:https://docs.apicloud.com/APICloud/junior-develop-guide 开发语言:H ...

  6. SpringSecurity 3.2入门(6)简单介绍默认使用的十一个过滤器

    Security提供了20多个filter,每个过滤器都提供特定的功能.这些filter在Spring Security filter过滤器链中的缺省顺序由 org.springframework.s ...

  7. iOS陆哥开发笔记(七) (AVFoundation简单介绍)

    在AVFoundation框架中AVAudioRecorder类专门处理录音操作,支持多种音频格式. 以下是经常使用的属性和方法: 属性 说明 @property(readonly, getter=i ...

  8. 【python3两小时快速入门】入门笔记03:简单爬虫+多线程爬虫

    作用,之间将目标网页保存金本地 1.爬虫代码修改自网络,目前运行平稳,博主需要的是精准爬取,数据量并不大,暂未加多线程. 2.分割策略是通过查询条件进行分类,循环启动多条线程. 1.单线程简单爬虫(第 ...

  9. Git学习笔记1--Git原理简单介绍

    Git是一个分布式的版本号控制工具,假设想用github等版本号控制系统,核心就是git,以下简介一些git的基础原理,原文:http://git-scm.com/book/en/Getting-St ...

随机推荐

  1. Android -- 动态添加布局

    在做项目的时候,遇到了scrollView与listView结合的使用,导致了滑动的混乱,但是有一个办法可以解决掉这个问题,就是手写listView的高度,还有另外一种方法,传送门:<Andro ...

  2. 检测任意日期字符串是否属于当天的java实现方案

    有时候我们会遇到很多形式的日期判断,甚至是并不常见的日期形式,比如20161212之类的日期,下面就此来进行代码是否处于当天的日期校验的代码实现来做一个整理. public static boolea ...

  3. [转]Clean Code Principles: Be a Better Programmer

    原文:https://www.webcodegeeks.com/web-development/clean-code-principles-better-programmer/ ----------- ...

  4. x-pack 功能介绍及配置传输层安全性(TLS / SSL)

    x-pack 功能介绍及配置传输层安全性(TLS / SSL) 学习了:https://blog.csdn.net/wfs1994/article/details/80411047

  5. 【ichartjs】用ichartjs替代Excel做直方图

    在 http://www.cnblogs.com/xiandedanteng/p/8717506.html 一文中,最后是用Excel作图,现在用ichartjs替代之. 效果如下: 文件下载: ht ...

  6. matlab中的size(),length(),ndims()函数的使用方法

    1.size()使用方法: size(a)表示矩阵每一个维度的长度 比方size([1 2 3;4 5 6]) 等于[2 3]: 表示他有2行3列. size([1 2 3]) 等于[1 3]: 表示 ...

  7. SELECT语句逻辑运行顺序,你知道吗?

    引言 这不是一个什么多深的技术问题.多么牛叉的编程能力.这跟一个人的开发能力也没有很必定的直接关系,可是知道这些会对你的SQL编写,排忧及优化上会有很大的帮助.它不是一个复杂的知识点.可是一个很基础的 ...

  8. SQL2005 镜像配置

    新添加了一台服务器,做原来服务器的备份机,用交叉线+双网卡配置了内网. 系统环境:Windows 2008 R2 数据库:SQL2005 SP3   设置镜像可以用证书和域两种情况,不过域设置的权限比 ...

  9. RSA 在C#里简单实现

    1.选择两个大素数:p,q;2.计算所得n:n=p*q;3.计算中间结果t:t=(p-1)*(q-1);4.选择一个e:要求e和t的最大公因数是1(也就是e与t互素);5.计算所得d:d*e mod ...

  10. Jquery重新学习之四[核心属性与文档处理属性]

    1:核心.each(callback),size(),length(),get([index]) 1.1 .each(callback)通过它可以遍历对象.数组的属性值并进行处理 <form i ...