0%

Hive Meta 适配达梦数据库

MYSQL 迁移到 HIVE 的时候, 索引名称不能更改. HIVE 自己保证了hive schema 所有表的索引唯一和名称

准备工作

image.png
image.png

  • 搭建达梦数据库
  • 搭建 hive

每一步都需要声明 HIVE_HOME 的路径, 避免多环境影响

修改 Hive 配置

hive-site.xml

1
2
3
4
5
6
7
8
9
10
11
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:dm://192.168.1.1:15236?schema=HIVE_META&amp;keywords=(comment,partition,top,AUTO_INCREMENT)&amp;clobAsString=true&amp;logDir=/tmp/dm</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>dm.jdbc.driver.DmDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

初始化数据库

1
export HIVE_HOME=/home/user/hive && ${HIVE_HOME}/bin/schematool -dbType oracle -initSchema -verbose

或者使用达梦的数据迁移工具进行操作

注意: 需要去掉大小写敏感(这个默认是打开的, 而且好像只能在初始化实例的时候修改一次)

  • 操作后需要在 Windows 达梦客户端 里面对 TABLE_PARAMS 表启用超长记录.

详解 DM 数据库字符串大小写敏感 | 达梦技术社区

达梦数据库大小写敏感设置及使用初探_达梦 大小写敏感_lilv1989的博客-CSDN博客

达梦数据库大小写敏感介绍_达梦数据库设置大小写不敏感_保定公民的博客-CSDN博客

JDBC URL 参数

  • &amp;keywords=(comment,partition,top,AUTO_INCREMENT)&amp;clobAsString=true&amp;logDir=/tmp/dm
  • &keywords=(comment,partition,top,AUTO_INCREMENT)&clobAsString=true&logDir=/tmp/dm

达梦的 JDBC URL 不能有空格,否则识别会有问题

启动 HIVE

debug 启动 metastore: export HIVE_HOME=/home/user/hive && hive --service metastore -p 11100 --hiveconf hive.root.logger=DEBUG,console

export HIVE_HOME=/home/user/hive && hive --hiveconf hive.root.logger=DEBUG,console

服务验证

  1. 将业务服务里面的 hive-site.xml 软链到上面修改过的 hive-site.xml
  2. 在业务服务的重启脚本里面将 export HIVE_HOME=/home/user/hive 添加进去
  3. 重启并观察日志
  4. 如果日志级别正常的话, 将会输出 HiveConf: Found configuration file file:/home/user/hive/conf/hive-site.xml
  5. 如果未输出, 检查日志级别以及是否加载了其他环境的 hive 配置
  6. 手动启动 修改过的 hive 和 之前的 hive, 手动在修改过的 hive 创建一张表, 检查 之前的 hive 是否可见, 以及 业务服务是否可见. 修改过的 hive: 可见, 之前的 hive: 不可见, 业务服务: 可见
1
2
3
show tables in test;
create table test.bbbb_dm like test.bbbb;
show tables in test;

HIVE 开启 DEBUG 输出 SQL

修改 conf/hive-log4j.properties

1
2
3
4
5
6
7
8
9
10
11
hive.root.logger=DEBUG,DRFA

log4j.category.DataNucleus=DEBUG,DRFA
log4j.category.Datastore=DEBUG,DRFA
log4j.category.Datastore.Schema=DEBUG,DRFA
log4j.category.JPOX.Datastore=DEBUG,DRFA
log4j.category.JPOX.Plugin=DEBUG,DRFA
log4j.category.JPOX.MetaData=DEBUG,DRFA
log4j.category.JPOX.Query=DEBUG,DRFA
log4j.category.JPOX.General=DEBUG,DRFA
log4j.category.JPOX.Enhancer=DEBUG,DRFA

可能需要的步骤

删除部分约束条件

1
2
3
4
alter table HIVE_META.ROLES drop constraint ROLEENTITYINDEX;
alter table HIVE_META.GLOBAL_PRIVS drop constraint GLOBALPRIVILEGEINDEX;
alter table HIVE_META.DBS drop constraint UNIQUE_DATABASE;
alter table HIVE_META.TBLS drop constraint UNIQUETABLE;

使用DmJdbc驱动自带的获取数据库小版本号方法报错问题

使用DmJdbc驱动自带的获取数据库小版本号方法报错问题记录_at dm.jdbc.driver.dmdbdatabasemetadata.getdatabase-CSDN博客

方法一、使用DM V8 1-2-114之后的版本驱动,比如03134283904-20220714-165042-20005 该版本(DM V8 1-2-128)。
方法二、更换数据库版本为DM V8 1-2-114之前的版本。
方法三、不使用DmJdbc驱动自带的方法获取数据库小版本号,自己在代码中来实现。

Maven Repository: com.dameng » DmJdbcDriver18 » 8.1.3.140

-------------本文结束再接再厉-------------

本文标题:Hive Meta 适配达梦数据库

文章作者:IITII

发布时间:2024年03月10日 - 14:03

最后更新:2025年03月10日 - 14:03

原始链接:https://iitii.github.io/2024/03/10/1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。