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. Git 提交的正确姿势:Commit message 编写指南

    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html Git 每次提交代码,都要写 Commit message( ...

  2. c++中static的用法详解

    C 语言的 static 关键字有三种(具体来说是两种)用途: 1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数. int foo(){ static int i = 1; // ...

  3. 初步:jenkins自动构建安卓Apk

    1:本地搭建jenkins 2:下载插件 3:配置相关信息(git,sdk等等) 3:拉取git仓库代码 4:编译执行 参考文章:http://www.cnblogs.com/reblue520/p/ ...

  4. anaconda3 安装opencv3.4.2 cuda9.2 mint19(ubuntu 18.04)

    从opencv1的时代,编译这玩意就不是太轻松.之前都是在win下.2.x时代,开始用cmake GUI,选vs版本,x86 x64 各种依赖库选项,debug release,... 现在3.4了, ...

  5. DataGrid的列上添加日期控件

    今天的使用EasyUI datagrid的时候,遇到了如下问题,如下图:

  6. springboot 解决配置js/css/img缓存问题

    # 解决配置js/css/img缓存问题 spring.resources.chain.strategy.content.enabled=true spring.resources.chain.str ...

  7. js实现文件的上传和输出,拖拽上传图片

    js文件上传 文件下载 以前的文件的下载都是在服务器,现在也是放在服务器比较好,有时候为了一些开发的方便,我们临时把处理的数据就放在了本地,然后自己访问.这个也是可以的. 1.利用html5的 Fil ...

  8. php中文件操作常用函数有哪些

    php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...

  9. CURL操作

    具体代码如下: <?php$curl=curl_init(); //初始化$url='http://www.ecshop.com';//curl_setopt(curl资源,选项标志,选项值)c ...

  10. windows10 64bit 下的tensorflow 安装及demo

    目前流行的深度学习库有Caffe,Keras,Theano,本文采用谷歌开源的曾用来制作AlphaGo的深度学习系统Tensorflow. 1:安装Tensorflow 最早TensorFlow只支持 ...