当前位置: 首页 > news >正文

hive 修改表的存储格式_Hive存储格式

转载自: https://www.2cto.com/database/201704/633287.html

Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据;而元数据是用来存储表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。下面分别来介绍。

一、Hive的数据存储

在让你真正明白什么是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数据抽象结构图

Data Abstractions in Hive

从上图可以看出,表是在数据库下面,而表里面又要分区、桶、倾斜的数据和正常的数据等;分区下面也是可以建立桶的。

二、Hive的元数据

Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 由于Hive的元数据需要不断的更新、修改,而HDFS系统中的文件是多读少改的,这显然不能将Hive的元数据存储在HDFS中。目前Hive将元数据存储在数据库中,如Mysql、Derby中。我们可以通过以下的配置来修改Hive元数据的存储方式

复制代码

当然,你还需要将相应数据库的启动复制到${HIVE_HOME}/lib目录中,这样才能将元数据存储在对应的数据库中。

相关文章:

  • mac redis 链接_2018 MAC下安装Redis和Redis可视化工具RDM并连接Redis
  • python的lib文件夹在哪_如何导入模块中的lib文件夹
  • heidisql连接不是本地_本地备份与云备份:选择您的备份计划
  • ibaties 更新 数据类型不一致_关于Python 3.9,那些你不知道的事
  • join为什么每个字符都分割了 js_【项目总结】之——JS分割字符串
  • rto净化效率计算公式_吕梁油墨厂RTO焚烧炉设计计算
  • 修改段落内容_为什么论文修改后重复率还变高?
  • windbg找不到pdb文件_使用Windbg时关于符号文件路径设置问题
  • layui open传参_layui 打开新页面,并传入参数
  • cnc加工中心保养表_CNC加工中心有哪些日常保养方法?
  • ffplay拉流时间长卡住_杭州女子崩溃:我吞了个勺子进去,14厘米长!事情要从一条鱼说起…...
  • 多台路由器堆叠_一文了解核心交换机的链路聚合、冗余、堆叠、热备份等专业知识...
  • 会计初级可以自己报名吗_初级会计考试报名入口
  • 三条中线分的六个三角形_《三角形》单元测试卷友情提示:重点就这些,对今后学习意义重大...
  • python 负数十六进制_Python入门基础语法知识2
  • Google 是如何开发 Web 框架的
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • C++类的相互关联
  • Electron入门介绍
  • java 多线程基础, 我觉得还是有必要看看的
  • jQuery(一)
  • PHP那些事儿
  • React的组件模式
  • Redis中的lru算法实现
  • SpringCloud集成分布式事务LCN (一)
  • 程序员该如何有效的找工作?
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 前端知识点整理(待续)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 思维导图—你不知道的JavaScript中卷
  • Java总结 - String - 这篇请使劲喷我
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • #stm32驱动外设模块总结w5500模块
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C#)一个最简单的链表类
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (二)pulsar安装在独立的docker中,python测试
  • .NET CLR基本术语
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net流程开发平台的一些难点(1)
  • .net生成的类,跨工程调用显示注释
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @requestBody写与不写的情况
  • @取消转义
  • [AAuto]给百宝箱增加娱乐功能
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [JDBC-1] JDBC Base Template
  • [office] excel2003进行可视性加密的方法 #媒体#其他#知识分享