1、Hive是Hadoop的一个子项目

利用MapReduce编程技术,实现了部分SQL语句。而且还提供SQL的编程接口。Hive推进Hadoop在数据仓库方面的发展。

Hive是一个基于Hadoop文件系统上的数据仓库架构。

主要功能:数据的ETL(抽取,转换,加载)工具,数据存储管理,大型数据集的查询与分析能力。

Hive定义了类SQL的语言,Hive QL,它允许用户进行和SQL相似的操作。还允许使用功能mapper和reducer操作。

Hadoop是批量处理系统,任务是高延迟性的,所以在任务提交和处理过程肯定会消耗时间。即使Hive处理的数据集非常小,在执行时也会出现延迟的问题。

所以,Hive的性能就不可能很好的和传统的Oracle数据库进行比较了。Hive不提供数据排序和查询的cache功能,而且也不提供在线事务处理。

Hive的最大价值是可扩展性(基于Hadop平台,可以自动适应机器数目和数据量的动态变化),可延展性(结合MapReduce和用户定义的函数库)。

2、Hive数据存储的原理

存储是建立在Hadoop文件系统上的。Hive本身没有专门的数据存储格式,也无法为数据建立索引。因此用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符就可以解析数据。

3、Hive的数据模型

表Table,外部表External Table,分区Partition,桶Bucket

  1、表Table:Hive中的表和数据库中的表概念上是类似的,每个表在Hive中都有一个对应的存储目录。

  比如说一个表table,在HDFS中的路径是/datawarehouse/table,其中/datawarehouse是hive-site.xml配置文件中由

  ${hive.metastore.warehouse.dir}指定的数据仓库的目录,所有的表数据除了外部表都保存在这个目录中。

  2、分区Partition:Hive中每个分区Partition,都对应数据库中相应分区的一个索引,但是Hive的分区组织方式和传统关系型数据库不同。

  Hive中表的一个分区对应表的下一个目录,所有分区的数据都存储在对应的目录中。

  3、桶Bucket:指定列进行哈希Hash计算时,根据哈希value切分数据。每一个桶对应一个文件。比如将属性列user列分散到32个桶中,首先要对user列的值  进行Hash计算,对应哈希value的桶写进对应的HDFS的目录。

  4、外部表:指向已经在HDFS中存在的数据。它和表在元数据的组织上是相同的。如果删除一个外部表只会删除元数据,而表中的数据不会被删除。

4、Hive的元数据

由于Hive的元数据可能要面临不断地更新,修改,读取,它肯定不适合用哪个Hadoop文件系统进行存储。Hive将元数据存储在RDBMS中,比如MySQL,Derby中。Hive有三种模式可以连接到Derby数据库:

  1、Single User Mode:单用户模式,它连接到一个内存(In-Memory),一般用来单元测试。

  2、Multi User Mode:多用户模式,通过网络连接到一个数据库中,最常用

  3、Remote Server Mode:远程服务器模式,用于非java客户端访问元数据库,在服务器启动一个MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer来访问元数据库。

Hive的用法的更多相关文章

  1. 第3节 hive高级用法:16、17、18

    第3节 hive高级用法:16.hive当中常用的几种数据存储格式对比:17.存储方式与压缩格式相结合:18.总结 hive当中的数据存储格式: 行式存储:textFile sequenceFile ...

  2. 第3节 hive高级用法:13、hive的函数

    4.2.Hive参数配置方式 Hive参数大全: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties 开 ...

  3. 利用SparkSQL(java版)将离线数据或实时流数据写入hive的用法及坑点

    1. 通常利用SparkSQL将离线或实时流数据的SparkRDD数据写入Hive,一般有两种方法.第一种是利用org.apache.spark.sql.types.StructType和org.ap ...

  4. Hive Joins 用法与操作

    Hive表连接的语法支持如下: join_table: table_reference JOIN table_factor [join_condition] | table_reference {LE ...

  5. 第3节 hive高级用法:15、hive的数据存储格式介绍

    hive当中的数据存储格式: 行式存储:textFile sequenceFile 都是行式存储 列式存储:orc parquet 可以使我们的数据压缩的更小,压缩的更快 数据查询的时候尽量不要用se ...

  6. 第3节 hive高级用法:14、hive的数据压缩

    六.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的 ...

  7. Impala 加载Hive的UDF

    Impala的UDF有两种: Native Imapal UDF:使用C++开发的,性能极高,官方性能测试比第二种高出将近10倍 Hive的UDF:是Hive中的UDF,直接加载到Impala中,优点 ...

  8. hiveservice简介

    由于实验的须要,这两天就搭了个Hive,简单记录一下: 平台:OS:Ubuntu Kylin 14.04 JAVA:Java 1.8.0_25 HADOOP:Hadoop 2.4.0 HIVE:Hiv ...

  9. hive支持in用法是从0.3.2版本后

    写hive 用in 如分时段,分类型,分平台统计点击量 select substr(createtime,12,2) hour,logtype,os_id,count(*)  from  wizad_ ...

随机推荐

  1. 最小 base64 图片

    http://www.webhek.com/post/base64-encode-of-1x1px-transparent-gif.html Base64 Encode 1x1px透明GIF图片 Ba ...

  2. vs项目的属性页面总结

    本文主要针对vs中属性页面的相关选项含义进行了总结.

  3. 理解 Redis(3) - 字符串值

    正如前面所讲的, redis 的数据结构就是一系列的键值对键 -> printable ASCII (可打印的 ASCII 码, 最大值是 512MB)值 -> Primitives (基 ...

  4. tornado关于AsyncHTTPClient的使用笔记

    先来一段同步的httpclient使用代码 url = 'https://www.baidu.com/' http_client = HTTPClient() response = http_clie ...

  5. swt-designer安装教程

    http://jingyan.baidu.com/article/3f16e003c87b082590c10343.html

  6. [jshint] 'import' is only available in ES6 (use 'esversion: 6'). (W119) 提示import等ES6语法的jshint错误的,在代码前加一行 /* jshint esversion: 6 */

    官方下载了vue的简单项目,用vscode打开main.js,代码前出现黄点,js报错了 把鼠标移至import的波浪线上,出现提示:W119 - ‘import’  is only availabl ...

  7. MATLAB 矩阵处理基础

  8. Spring Boot设置值:分别用@ConfigurationProperties和@Value给属性设值及其区别

    @ConfigurationProperties给属性映射值编写JavaBean/** 将配置文件application.properties中配置的每一个属性值映射到当前类的属性中:* @Confi ...

  9. Ubuntu 16.04下docker ce的安装(待完善)

    参见:https://www.cnblogs.com/senlinyang/p/8203191.html https://blog.csdn.net/qq_34906391/article/detai ...

  10. Python 编程快速上手 第十七章 操作图像

    前言 在这一章节,讲了关于图像的三个方面的内容: 获得图像的相关信息:例如 RGBA 值,尺寸... 对图像进行编辑操作:例如 旋转,缩放... 在图像上绘制形状:例如 矩形,圆形... [Image ...