本博客属原创文章,转载请注明出处: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!一切正常
更多技术文章、感悟、分享、勾搭,请用微信扫描:
相关推荐
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
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 通过控制台的...
ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. 前言报错信息异常分析配置改动后记 前言 在成功消除Cloudare管理界面上那些可恶的警告之后,我又对yarn...
在大数据处理领域,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.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 是一个基于 Hadoop 的数据仓库工具,用于组织、查询和分析大量数据。它提供了一个SQL-like(HQL,Hive SQL)接口,使得非专业程序员也能方便地处理存储在Hadoop分布式文件系统(HDFS)中的大规模数据集...
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-...
基于Hadoop Hive健身馆可视化分析平台项目源码+数据库文件.zip启动方式 环境启动 hadoop hive2元数据库 sql导入 导入hivesql脚本,修改application.yml 启动主程序 HadoopApplication 基于Hadoop Hive健身馆可视化...
Apache Hive 是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like语言(称为HQL,Hive Query Language)对大规模数据集进行分析和查询。在Hadoop生态系统中,Hive扮演着数据仓库和数据分析的重要角色,尤其适用...
Apache Hive(apache-hive-1.2.2-bin.tar.gz、apache-hive-1.2.2-src.tar.gz)是一种分布式容错数据仓库系统,支持大规模分析,并使用 SQL 促进读取、写入和管理驻留在分布式存储中的 PB 级数据。Hive 构建在 Apache...
1. **配置Hive配置文件**:修改`hive-site.xml`,确保`hive.exec.charset`和`hive.server2.logging.operation.charset`等属性设置为UTF-8,以支持中文字符。 2. **检查HDFS文件编码**:确保存储在HDFS中的数据文件...
标题中的“hadoop/bin目录文件,含hadoop.dll + winutils.exe”指的是在Apache Hadoop 2.6.3版本中,位于bin目录下的两个关键文件:hadoop.dll和winutils.exe。这两个文件对于Windows用户来说是至关重要的,因为...
Apache Hive 是一个基于Hadoop的数据仓库工具,它允许通过SQL-like查询语言(称为HQL)对大规模数据集进行分析和管理。Hive是Apache软件基金会的一部分,为大数据处理提供了便捷的接口,使得非Hadoop专家也能操作...
Apache Hive 是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like语言(称为HQL,Hive Query Language)对大规模数据集进行分析和查询。Hive最初由Facebook开发,后来成为Apache软件基金会的一个顶级项目,广泛...
Apache Hive 是一个基于 Hadoop 的数据仓库工具,用于查询、管理和处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。Hive 提供了一种结构化的数据模型和SQL-like 查询语言(HQL),使得非程序员也能对...
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文件