`
guoyunsky
  • 浏览: 854453 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:206263
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

Hive源码分析(三) hadoop.hive.metastore.model.MDatabase is not persistable异常解决

 
阅读更多

  本博客属原创文章,转载请注明出处:http://guoyunsky.iteye.com/blog/1178076   

   欢迎加入Hadoop超级群: 180941958

 

当我在Eclipse中跑起Hive,运行show tables命令后,发现报这个异常:

> hive> show tables;
> show tables;
> FAILED: Error in metadata:
> org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The
> class "org.apache.hadoop.hive.metastore.model.MDatabase" is not persistable.
> This means that it either hasnt been enhanced, or that the enhanced version
> of the file is not in the CLASSPATH (or is hidden by an unenhanced version),
> or the Meta-Data/annotations for the class are not found.
> NestedThrowables:

> org.datanucleus.exceptions.ClassNotPersistableException: The class
> "org.apache.hadoop.hive.metastore.model.MDatabase" is not persistable. This
> means that it either hasnt been enhanced, or that the enhanced version of
> the file is not in the CLASSPATH (or is hidden by an unenhanced version), or
> the Meta-Data/annotations for the class are not found.
> FAILED: Execution Error, return code 1 from
> org.apache.hadoop.hive.ql.exec.DDLTask
> hive>
>

 

跟踪源码发现加上知道Hive是利用其他数据库,如默认到derby,mysql等保存表和数据库信息。而这块代码在获取数据库时所触发,代码如下:

private MDatabase getMDatabase(String name) throws NoSuchObjectException {
    MDatabase mdb = null;
    boolean commited = false;
    try {
      openTransaction();
      name = name.toLowerCase().trim();
      Query query = pm.newQuery(MDatabase.class, "name == dbname");
      query.declareParameters("java.lang.String dbname");
      query.setUnique(true);
      mdb = (MDatabase) query.execute(name);
      pm.retrieve(mdb);
      commited = commitTransaction();
    } finally {
      if (!commited) {
        rollbackTransaction();
      }
    }
    if (mdb == null) {
      throw new NoSuchObjectException("There is no database named " + name);
    }
    return mdb;
  }

   所触发异常是在 mdb = (MDatabase) query.execute(name);这行,也就是要去derby或mysql等(根据你到hive-default.xml配置)获取数据库到时候所触发。三思不得其解,跟进代码发现跟javax.jdo有关系。以前没接触过,于是google了下。按照这个说明搞定这个错误:http://www.datanucleus.org/products/accessplatform/guides/eclipse/index.html

     我大概说下过程,原理日后再研究:

    1)通过Eclipse安装datanucleus

        Help->Install New Software->Work with输入框里输入网址http://www.datanucleus.org/downloads/eclipse-update/

    2)设置datanucleus

       Window->Preferences->DataNucleus->SchemaTool->

       根据你在hive-default.xml里的配置进行设置Drive Path、Driver Name、Connection URL:

       比如我这里采用默认到derby嵌入式数据库,设置如下:

       Drive Path:file:/home/hadoop/workspace/hive-0.7.0/lib/derby.jar (derby.jar到路径)

       Driver Name:org.apache.derby.jdbc.EmbeddedDriver

      Connection URL:jdbc:derby:/path/db-name;[create=true]

   3)在你到工程上部署datanucleus,也就是hive源码:

      右击Hive源码工程->DataNucleus->Add DataNucleus Support->

      之后再看Hive源码工程的Dataucleus会多几项,我依次点击运行了Enable Auto-Enhancement,Run Enhancer Tool,Run Schema Tool

 

 之后再跑Hive源码,运行SHOW TABLES.OK!一切正常

 

 更多技术文章、感悟、分享、勾搭,请用微信扫描:

 

0
1
分享到:
评论

相关推荐

    hive metastore java api使用

    hive metastore hive metastore是hive的元数据管理服务,实际应用...import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.ha

    Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析_xiaohu21的博客-CSDN博客.mht

    Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析_xiaohu21的博客-CSDN博客.mht

    解决Hive启动失败Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 通过控制台的...

    【hive on spark Error】return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask.

    ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. 前言报错信息异常分析配置改动后记 前言 在成功消除Cloudare管理界面上那些可恶的警告之后,我又对yarn...

    apache-hive-3.1.2-bin.tar.gz

    在大数据处理领域,Hive 提供了一个灵活、可扩展的框架,使得数据分析人员能够对存储在Hadoop分布式文件系统(HDFS)中的大规模数据集进行分析。Hive 3.1.2 是其稳定版本之一,提供了许多性能优化和新功能。 标题中...

    apache-hive-2.1.1-bin.tar

    apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-...

    apache-hive-2.3.9-bin.tar大数据HIVE.zip

    Apache Hive 是一个基于 Hadoop 的数据仓库工具,用于组织、查询和分析大量数据。它提供了一个SQL-like(HQL,Hive SQL)接口,使得非专业程序员也能方便地处理存储在Hadoop分布式文件系统(HDFS)中的大规模数据集...

    Apache Hive(apache-hive-3.1.3-bin.tar.gz)

    Apache Hive(apache-hive-3.1.3-bin.tar.gz、apache-hive-3.1.3-src.tar.gz)是一种分布式容错数据仓库系统,支持大规模分析,并使用 SQL 促进读取、写入和管理驻留在分布式存储中的 PB 级数据。Hive 构建在 Apache...

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...

    基于Hadoop Hive健身馆可视化分析平台项目源码+数据库文件.zip

    基于Hadoop Hive健身馆可视化分析平台项目源码+数据库文件.zip启动方式 环境启动 hadoop hive2元数据库 sql导入 导入hivesql脚本,修改application.yml 启动主程序 HadoopApplication 基于Hadoop Hive健身馆可视化...

    apache-hive-2.3.3-bin.tar.gz

    Apache Hive 是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like语言(称为HQL,Hive Query Language)对大规模数据集进行分析和查询。在Hadoop生态系统中,Hive扮演着数据仓库和数据分析的重要角色,尤其适用...

    Apache Hive(apache-hive-1.2.2-bin.tar.gz)

    Apache Hive(apache-hive-1.2.2-bin.tar.gz、apache-hive-1.2.2-src.tar.gz)是一种分布式容错数据仓库系统,支持大规模分析,并使用 SQL 促进读取、写入和管理驻留在分布式存储中的 PB 级数据。Hive 构建在 Apache...

    hive-exec-2.1.1.jar

    1. **配置Hive配置文件**:修改`hive-site.xml`,确保`hive.exec.charset`和`hive.server2.logging.operation.charset`等属性设置为UTF-8,以支持中文字符。 2. **检查HDFS文件编码**:确保存储在HDFS中的数据文件...

    hadoop/bin目录文件,含hadoop.dll + winutils.exe

    标题中的“hadoop/bin目录文件,含hadoop.dll + winutils.exe”指的是在Apache Hadoop 2.6.3版本中,位于bin目录下的两个关键文件:hadoop.dll和winutils.exe。这两个文件对于Windows用户来说是至关重要的,因为...

    apache-hive-2.1.0-bin.tar.gz

    Apache Hive 是一个基于Hadoop的数据仓库工具,它允许通过SQL-like查询语言(称为HQL)对大规模数据集进行分析和管理。Hive是Apache软件基金会的一部分,为大数据处理提供了便捷的接口,使得非Hadoop专家也能操作...

    apache-hive-2.3.0-bin.tar.gz

    Apache Hive 是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like语言(称为HQL,Hive Query Language)对大规模数据集进行分析和查询。Hive最初由Facebook开发,后来成为Apache软件基金会的一个顶级项目,广泛...

    apache-hive-1.2.1-bin.tar.gz.zip

    Apache Hive 是一个基于 Hadoop 的数据仓库工具,用于查询、管理和处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。Hive 提供了一种结构化的数据模型和SQL-like 查询语言(HQL),使得非程序员也能对...

    apache-hive-3.1.2-bin.tar.gz.zip

    apache-hive-3.1.2-bin.tar.gz, 下载自:https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/, 上传至CSDN备份,本资源下载后需要解压缩zip文件,才是原本的apache-hive-3.1.2-bin.tar.gz文件

Global site tag (gtag.js) - Google Analytics