hive-数据存储各种模式

转载 2016年05月31日 23:41:10
Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据;而元数据是用来存储表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。下面分别来介绍。


  一、Hive的数据存储
  Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中。Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中(如果数据是在HDFS上;但如果数据是在本地文件系统中,那么是将数据复制到表所在的目录中)。


  Hive中主要包含以下几种数据模型:Table(表),External Table(外部表),Partition(分区),Bucket(桶)(本博客会专门写几篇博文来介绍分区和桶)。


  1、表:Hive中的表和关系型数据库中的表在概念上很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通过${HIVE_HOME}/conf/hive-site.xml配置文件中的hive.metastore.warehouse.dir属性来配置,这个属性默认的值是/user/hive/warehouse(这个目录在HDFS上),我们可以根据实际的情况来修改这个配置。如果我有一个表wyp,那么在HDFS中会创建/user/hive/warehouse/wyp目录(这里假定hive.metastore.warehouse.dir配置为/user/hive/warehouse);wyp表所有的数据都存放在这个目录中。这个例外是外部表。


  2、外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据;而如果你要删除表,该表对应的所有数据包括元数据都会被删除。


  3、分区:在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比如wyp表有dt和city两个分区,则对应dt=20131218,city=BJ对应表的目录为/user/hive/warehouse/dt=20131218/city=BJ,所有属于这个分区的数据都存放在这个目录中。


  4、桶:对指定的列计算其hash,根据hash值切分数据,目的是为了并行,每一个桶对应一个文件(注意和分区的区别)。比如将wyp表id列分散至16个桶中,首先对id列的值计算hash,对应hash值为0和16的数据存储的HDFS目录为:/user/hive/warehouse/wyp/part-00000;而hash值为2的数据存储的HDFS 目录为:/user/hive/warehouse/wyp/part-00002。



Hive-数据倾斜总结

本文转载自:http://blog.csdn.net/lovingprince/article/details/7264549 几个比较特殊的点都提到了,大家可以作为参考。 在做Shu...
  • programmer_monica
  • programmer_monica
  • 2014年11月05日 12:28
  • 296

Hive-模式设计

一、按天划分表 二、关于分区   通过创建分区可以优化一些查询,但同时也可能对其他一些重要的查询不利。   HDFS用于设计存储数百万的大文件,而非数十亿的小文件。使用分区可能导致的一个问题就是...
  • qq_34874791
  • qq_34874791
  • 2017年03月19日 09:30
  • 181

SaaS多租户模式数据存储方案

云计算多租户几乎用于所有软件即服务 (Software as a Service, SaaS) 应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定。话虽如此,用户可以通过 Intern...
  • u010926964
  • u010926964
  • 2015年08月07日 14:46
  • 2221

Hive-数据分析和数据仓库

为缩短MapReduce作业的开发周期(编辑/编译/提交),完全摒弃这一过程,加速从分析数据到生成结果的过程,Hive使用MapReduce对存储于HDFS上的数据进行分析,且定义了一种类SQL查询语...
  • u012135300
  • u012135300
  • 2016年04月26日 11:18
  • 293

hive-导入数据的方式

来源:http://gaoxianwei.iteye.com/blog/2158469 1.从本地文件系统中导入数据到hive表  (1)数据准备(/home/sopdm/test.dat):  ...
  • qq_34941023
  • qq_34941023
  • 2016年07月06日 23:18
  • 170

hive-查询元数据

import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import...
  • zhong8732134
  • zhong8732134
  • 2017年01月10日 21:20
  • 864

深入理解计算机系统-之-数值存储(一)-CPU大端和小端模式详解

大端与小端在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念。MSB与LSB最高有效位(MSB)指二进制中最高值的比特。在16比特的数字音频中,其第1个...
  • gatieme
  • gatieme
  • 2016年02月18日 16:07
  • 3515

mysql存储方式MyISAM 和 InnoDB的区别

MyISAM 和 InnoDB 讲解:  InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高...
  • lu_wei_wei
  • lu_wei_wei
  • 2016年05月10日 08:52
  • 4300

hive-数据倾斜介绍

原文链接 hive在跑数据时经常会出现数据倾斜的情况,使的作业经常reduce完成在99%后一直卡住,最后的1%花了几个小时都没跑完,这种情况就很可能是数据倾斜的原因,解决方法要根据具体情况来选...
  • u013083576
  • u013083576
  • 2017年01月11日 14:11
  • 118

大小端模式详解

int i=1;   char *p=(char *)&i;       if(*p==1)                printf("1");      else            pri...
  • dyllove98
  • dyllove98
  • 2013年05月13日 23:48
  • 15097
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hive-数据存储各种模式
举报原因:
原因补充:

(最多只允许输入30个字)