Hive 使用达梦DM8 无法识别 “COMMENT” 问题

  1. 将达梦数据库驱动 DmJdbcDriver18-8.1.2.192.jar 导入到 hive 的 lib 文件夹下

  2. 修改 hive 配置文件,增加 dm 数据库相关信息

    c 复制代码
    <property>
         <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:dm://127.0.0.1:5236?SCHEMA=hive</value>
         <description>
           JDBC connect string for a JDBC metastore.
           To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
           For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
         </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>
     <property>
    
     <property>
         <name>javax.jdo.option.ConnectionUserName</name>
         <value>SYSDBA</value>
         <description>Username to use against metastore database</description>
     </property>
    
     <property>
         <name>javax.jdo.option.ConnectionUserName</name>
         <value>SYSDBA</value>
         <description>Username to use against metastore database</description>
       </property>
     <property>
  3. 在导入数据时,出现无法识别 "COMMENT" 关键字错误,报 return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask, MetaException(message:Add request failed : INSERT INTO COLUMNS_V2 ...)错误,如下图:

    (1)经过排查 hive lib包下 datanucleus-rdbms-4.1.19.jar 源代码,缺少 "COMMENT" 关键字

    datanucleus-rdbms-4.1

    (2)官方源码地址::链接

    (3)修改 org.datanucleus.store.rdbms.adapter 下的 BaseDatastoreAdapter类 或者 org/datanucleus/store/rdbms/adapter/SQLConstants.java 类,在

    SQL99_RESERVED_WORDS 增加 "COMMENT"

    (4)重新打包后,替换Hive/lib下 的 datanucleus-rdbms-4.1.19.jar 包,重新执行hive命令即可成功

    (5)已经重新打包的 datanucleus-rdbms-4.1.19.jar提取码:1234

  4. 与原作者沟通后,得到回复大概意思是 "COMMENT" 在SQL92、SQL99、SQL2003 标准中不是保留关键字,所以后续也不会增加这个关键字,如有需求自行添加打包使用。

相关推荐
码农君莫笑几秒前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
江上挽风&sty2 分钟前
【Django篇】--动手实践Django基础知识
数据库·django·sqlite
向阳12186 分钟前
mybatis 动态 SQL
数据库·sql·mybatis
胡图蛋.8 分钟前
什么是事务
数据库
小黄人软件10 分钟前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
张声录115 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
无为之士21 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
小汤猿人类34 分钟前
open Feign 连接池(性能提升)
数据库
学计算机的睿智大学生43 分钟前
Hadoop集群搭建
大数据·hadoop·分布式