hive建表并添加数据_hive和mysql的关系

hive建表并添加数据_hive和mysql的关系在使用hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具。要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在hdfs上,而是存放在传统的RDBMS中,典型的如mysql,derby等,这里我们以mysql为元数据库,结合0.4.2版本的hive为例进行研究。连接上mysql后可以看到hive元数据对应的表约有…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在使用hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具。

要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在hdfs上,而是存放在传统的RDBMS中,典型的如mysql,derby等,这里我们以mysql为元数据库,结合0.4.2版本的hive为例进行研究。

连接上mysql后可以看到hive元数据对应的表约有20个,其中和表结构信息有关的有9张,其余的10多张或为空,或只有简单的几条记录,以下是部分主要表的简要说明。

表名

说明

关联键

TBLS

所有hive表的基本信息

TBL_ID,SD_ID

TABLE_PARAM

表级属性,如是否外部表,表注释等

TBL_ID

COLUMNS

Hive表字段信息(字段注释,字段名,字段类型,字段序号)

SD_ID

SDS

所有hive表、表分区所对应的hdfs数据目录和数据格式

SD_ID,SERDE_ID

SERDE_PARAM

序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等

SERDE_ID

PARTITIONS

Hive表分区信息

PART_ID,SD_ID,TBL_ID

PARTITION_KEYS

Hive分区表分区键

TBL_ID

PARTITION_KEY_VALS

Hive表分区名(键值)

PART_ID

除了上面几张表外,还有两张表非常有趣:NUCLEUS_TABLES和SEQUENCE_TABLE

NUCLEUS_TABLES表中保存了元数据表和hive中class类的对应关系,如’org.apache.hadoop.hive.metastore.model.MTable’, ‘`TBLS`’,说明MTable类对应了元数据的TBLS表,不难想象当我们创建一张表时,hive一定会通过MTable的DAO模式向TBLS插入一条数据用来描述刚刚创建的hive表。NUCLEUS_TABLES表内现在共有17条这样的记录。

SEQUENCE_TABLE表保存了hive对象的下一个可用ID,如’org.apache.hadoop.hive.metastore.model.MTable’, 271786,则下一个新创建的hive表其TBL_ID就是271786,同时SEQUENCE_TABLE表中271786被更新为271791(这里每次都是+5而不是预料中的+1,有些奇怪)。同样,COLUMN,PARTITION等都有相应的记录。

从上面两张表的内容来看,hive表创建表的过程已经比较清楚了

解析用户提交hive语句,对其进行解析,分解为表、字段、分区等hive对象

根据解析到的信息构建对应的表、字段、分区等对象,从SEQUENCE_TABLE中获取构建对象的最新ID,与构建对象信息(名称,类型等)一同通过DAO方法写入到元数据表中去,成功后将SEQUENCE_TABLE中对应的最新ID+5。

实际上我们常见的RDBMS都是通过这种方法进行组织的,典型的如postgresql,其系统表中和hive元数据一样裸露了这些id信息(oid,cid等),而Oracle等商业化的系统则隐藏了这些具体的ID。

有了上面的信息,再想获得hive的建表语句已经是易如反掌了,这里提供一个已经开发好的脚本,使用shell开发,大家可以自由修改。注意:其中mysql连接信息请根据实际环境进行配置。

使用方法如下:

hivesql sql  

hivesql synctab

如果需要多天分区DDL还可以这样用(前提是分区中含有日期信息,如pt=20100720):

hivesql sql s_table 20100702                      — 除建表语句外,获得自20100702以来的分区DDL

hivesql sql s_table 20100702 20100725  — ………………………..自20100702-20100725的分区DDL

hivesql sql s_table 20100702 10                 — ………………………..自20100702起10天的分区DDL

hivesql synctab和hivesql sql一样支持上述日期限定功能。

此外,还提供了两个附加的功能(也很有用呃)

hivesql loc             —  根据关键字查找能够匹配到的hive表或对应的数据路径

hivesql hdfswc    — 获取指定数据目录下所有数据的总行数,支持普通文本,TextFile和SequenceFile的压缩格式,类似于linux下的wc -l

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-03-22 15:35

浏览 1921

评论

1 楼

yugouai

2013-02-05

下载不了啊。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231313.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库概念设计与逻辑设计[通俗易懂]

    数据库概念设计与逻辑设计[通俗易懂]一、概念设计概念设计的目的就是为了建立概念数据模型,概念数据模型也称为高级数据模型,之所以称为高级数据模型是因为它更接近于人的思维,而不是机器的思维,相比于关系模型更容易理解,此处的高级和低级的概念,与程序语言领域的高低级是一样的。我们通常称Java语言为高级语言,汇编语言为低级语言,是因为高级语言对于我们而言要比汇编语言更容易理解。关于概念数据模型,我们一般都会采用E-R图进行描述。E-R图的规则如下:1.实体采用矩形框,联系采用菱形框,属性采用椭圆形框。2.实体、联系、属性必须使用文字描

    2022年10月9日
    2
  • windows安装虚拟机(VMware)

    windows安装虚拟机(VMware)引言:最近想要安装一个linux,根据实际我决定安装在虚拟机上,于是先动手安装一个虚拟机。参考:centos详细版本介绍参考:“网络选择安装部分”通俗讲解资源:阿里云开源镜像站环境:本机环境:windows764bit内存:8GB1600MHZCPU:Corei54210M双核双线程VMware镜像:VMware-workstation…

    2022年9月12日
    2
  • c++酒店管理系统课程设计_酒店管理系统毕业设计

    c++酒店管理系统课程设计_酒店管理系统毕业设计课程设计-C#酒店管理系统1.主要功能:客户的入住管理、预定管理、客房管理、用户管理、收银结算、补交押金等等。数据库用的是Access。2.效果截图:登录页面主页面主要功能3.项目文件截图:想要源码加我QQ1352677818…

    2022年9月24日
    5
  • Javascript作用域问题的构造函数的变量

    Javascript作用域问题的构造函数的变量

    2022年1月4日
    49
  • SSM-Mybatis(3)[通俗易懂]

    SSM-Mybatis(3)[通俗易懂]复杂的sql查询环境搭建CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(id, name) VALUES (1,’秦老师’); CREATE TABLE `student` ( `id` INT(10) NOT NULL

    2022年8月8日
    6
  • 快速入门UML时序图「建议收藏」

    快速入门UML时序图「建议收藏」使用UML时序图重构代码使用UML时序图时序图是什么时序图的元素组合块(CombinedFragment)举例使用UML时序图最近,在重构项目中的老代码的时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱的纷繁的关系中,像是苏东坡诗中的那只高贵的乌鸦先生找不到落脚之处。披沙拣金,终于理出一点头绪,生怕忘了,赶紧记下来,又苦于没有好的方式去表达这些错杂的关系,蓦然发现,UML时序图是表达业…

    2022年6月29日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号