前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0916-5.16.2-如何将Hive元数据库从外部PostgreSQL转换到MySQL

0916-5.16.2-如何将Hive元数据库从外部PostgreSQL转换到MySQL

作者头像
Fayson
发布2024-04-11 08:51:17
830
发布2024-04-11 08:51:17
举报
文章被收录于专栏:Hadoop实操Hadoop实操

作者:刘元强

1 文档编写目的

通过Navicat Premium的Data transfer工具来做数据转换。

测试环境:

  • • CDH5.16.2
  • • PostgreSQL9.6
  • • MySQL5.7.34
  • • Navicat Premium

2 Hive元数据库从PG转MySQL

从PostgreSQL中导出表的数据,但是不导表结构,表结构通过CM去创建

2.1 创建Hive元数据库

1.在MySQL中创建Hive元数据库并授权

代码语言:javascript
复制
CREATE DATABASE hive_from_pg DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive_from_pg.* TO 'hive_from_pg'@'%' IDENTIFIED BY 'password';

2.停止Hive服务,在配置中搜索“database”,修改数据库配置到MySQL库

3.在Hive -> Action中点击“创建 Hive Metastore 数据库表”来创建表结构

4.等待命令执行完成,在MySQL中查看Hive元数据表已存在

5.执行以下SQL,修改表的字段类型

代码语言:javascript
复制
alter table SDS modify column IS_COMPRESSED varchar(5) NOT NULL;
alter table SDS modify column IS_STOREDASSUBDIRECTORIES varchar(5) NOT NULL;

执行之一步的原因是,从PostgreSQL导出的数据字段类型和Hive自动创建的不一样,从PostgreSQL里导出的是varchar(5),Hive自动创建的是bigint(1),直接导入数据会报错。

2.2 进行数据转换

1.在Navicat 的工具栏选择“Tools -> Data Transfer…”

2.设置源数据库和目标数据库

3.选择页面下方的“Option”,取消勾选“Create tables”,点击OK保存

4.点击Next进入下一步,勾选所有的表

5.点击Next进入下一步,勾选“Continue on error”, 点击Start开始进行转换

6.转换完成,检查转换过程的日志是否有报错

查看转换的日志可以看到有几个报错

代码语言:javascript
复制
[DTF] Data Transfer started
……
[ERR] 47> INSERT INTO `VERSION` (`VER_ID`, `SCHEMA_VERSION`, `VERSION_COMMENT`, `SCHEMA_VERSION_V2`) VALUES (1, '1.1.0', 'Hive release version 1.1.0', '1.1.0-cdh5.16.0')
[ERR] 47> 1062 - Duplicate entry '1' for key 'PRIMARY'
……
[ERR] 51> INSERT INTO `next_compaction_queue_id` (`ncq_next`) VALUES (1)
[ERR] 51> 1146 - Table 'hive_from_pg.next_compaction_queue_id' doesn't exist
……
[ERR] 52> INSERT INTO `next_lock_id` (`nl_next`) VALUES (1)
[ERR] 52> 1146 - Table 'hive_from_pg.next_lock_id' doesn't exist
……
[ERR] 53> INSERT INTO `next_txn_id` (`ntxn_next`) VALUES (1)
[ERR] 53> 1146 - Table 'hive_from_pg.next_txn_id' doesn't exist
……
[DTF] Finished with error

其中VERSION表记录的是Hive的版本信息,本来就有数据,所以会报错,要插入的数据和本来的数据一样,所以不影响。

剩下几张表next_txn_id、next_compaction_queue_id、next_lock_id报错不存在,Hive使用MySQL做元数据库不需要这几张表,也没影响。

7.此时可以对元数据表进行一些检查,比如对比一下行数是否准确。

8.启动Hive服务

9.验证Hive服务是否正常。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 文档编写目的
  • 2 Hive元数据库从PG转MySQL
    • 2.1 创建Hive元数据库
      • 2.2 进行数据转换
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档