最近需要提取一些数据,故开始使用hive,本机搭建了一个hive客户端环境,但是始终有问题,在本机装好了mysql以后,老是报
Caused by: org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : "`DBS`" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.autoCreateTables"
at org.datanucleus.store.rdbms.table.AbstractTable.exists(AbstractTable.java:455)
at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.performTablesValidation(RDBMSStoreManager.java:2689)
at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.addClassTablesAndValidate(RDBMSStoreManager.java:2503)
at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.run(RDBMSStoreManager.java:2148)
at org.datanucleus.store.rdbms.AbstractSchemaTransaction.execute(AbstractSchemaTransaction.java:113)
at org.datanucleus.store.rdbms.RDBMSStoreManager.addClasses(RDBMSStoreManager.java:986)
at org.datanucleus.store.rdbms.RDBMSStoreManager.addClasses(RDBMSStoreManager.java:952)
at org.datanucleus.store.AbstractStoreManager.addClass(AbstractStoreManager.java:919)
at org.datanucleus.store.mapped.MappedStoreManager.getDatastoreClass(MappedStoreManager.java:356)
at org.datanucleus.store.rdbms.query.legacy.ExtentHelper.getExtent(ExtentHelper.java:48)
at org.datanucleus.store.rdbms.RDBMSStoreManager.getExtent(RDBMSStoreManager.java:1332)
at org.datanucleus.ObjectManagerImpl.getExtent(ObjectManagerImpl.java:4149)
依据堆栈提示,然后下得jar文件主要是看 AbstractTable.exists(AbstractTable.java:455)
if ((type == null) || ((allowDDLOutput()) && (this.storeMgr.getDdlWriter() != null) && (this.storeMgr.getCompleteDDL())))
{
if (!auto_create)
{
this.existsInDatastore = Boolean.FALSE;
throw new MissingTableException(getCatalogName(), getSchemaName(), toString());
}
455 行 便是 异常抛出之地。
依据 hive错误提示
"datanucleus.autoCreateTables" = true
配置了hive-site.xml不行,故结合上面的代码看,猜测是autoCreate没有传递进去,故开始跟踪这个值的设置的地方,最终跟踪到org.datanucleus.store.mapped.MappedStoreManager,其中有一段很关键的代码如下
if ((this.readOnlyDatastore) || (this.fixedDatastore))
{
this.autoCreateTables = false;
this.autoCreateColumns = false;
this.autoCreateConstraints = false;
}
else
{
boolean autoCreateSchema = conf.getBooleanProperty("datanucleus.autoCreateSchema");
if (autoCreateSchema)
{
this.autoCreateTables = true;
this.autoCreateColumns = true;
this.autoCreateConstraints = true;
}
else
{
this.autoCreateColumns = conf.getBooleanProperty("datanucleus.autoCreateColumns");
this.autoCreateTables = conf.getBooleanProperty("datanucleus.autoCreateTables");
this.autoCreateConstraints = conf.getBooleanProperty("datanucleus.autoCreateConstraints");
}
}
看来关键是 this.readOnlyDatastore this.fixedDatastore 这2个字段
而且autoCreateSchema 这个设置为true 就可以决定了其他的设置,所以其他设置在此都无效了。
继续追踪org.datanucleus.store.AbstractStoreManager 发现了这2个字段的设置代码
this.readOnlyDatastore = conf.getBooleanProperty("datanucleus.readOnlyDatastore");
this.fixedDatastore = conf.getBooleanProperty("datanucleus.fixedDatastore");
原来问题再这里,再次修改hive-site.xml文件,ok,错误没有了。
分享到:
相关推荐
hive 开发UDF 使用maven工程 引发jar包缺失 hive 开发UDF 使用maven工程 引发jar包缺失
《DBeaver与Hive连接:hive-jdbc-uber-2.6.5.0-292.jar驱动详解》 在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,广泛用于数据查询和分析。而DBeaver,作为一款跨平台的数据库管理工具,以其用户友好的...
Missing Hive Execution Jar: /hive/hive1.2.1/lib/hive-exec-*.jar
"HIVE安装及详解" HIVE是一种基于Hadoop的数据仓库工具,主要用于处理和分析大规模数据。下面是关于HIVE的安装及详解。 HIVE基本概念 HIVE是什么?HIVE是一种数据仓库工具,主要用于处理和分析大规模数据。它将...
在使用Hive的Beeline客户端进行连接时,可能会遇到错误提示"Could not open client transport with JDBC Uri: jdbc:hive2://hcmaster:10000/default"。这个错误通常意味着Beeline无法通过JDBC URL成功建立到Hive ...
This book is your go-to resource for using Hive: authors Scott Shaw, Ankur Gupta, David Kjerrumgaard, and Andreas Francois Vermeulen take you through learning HiveQL, the SQL-like language specific ...
ALTER TABLE version ADD UNIQUE (schema_version); ``` 2. **端口占用**: - **现象**:即使解决了元数据版本问题后,仍可能出现端口占用的情况。 - **解决步骤**: - 查看9083端口是否被占用,可以使用`lsof...
Table or view 'stu' not found in database 'default'; 分析:确实没有临时表View,并且没有开启Hive支持 解决:开启Hive支持 val spark: SparkSession = SparkSession.builder() .appName(SparkUtils) .master...
5. **Hive Table**:Hive中的表是逻辑上的概念,实际数据存储在HDFS上,以分隔符分隔的文本文件形式存在。 6. **Partitions**:Hive支持分区,可以将大表按照某个字段值进行划分,提高查询效率。例如,按日期分区的...
3. **配置Hive服务**:修改`hive-site.xml`配置文件,添加Kerberos相关属性,如`hive.server2.authentication`设为`KERBEROS`,`hive.metastore.kerberos.principal`和`hive.server2.kerberos.principal`分别设定为...
hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema...
Hive JDBC连接示例该项目展示了如何使用各种不同的方法连接到Hiveserver2。 所有类仅适用于Hiveserver2。 正在使用Cloudera JDBC驱动程序,可以从下载。 在撰写本文时,最新版本为v2.5.15 。要求: 您需要下载驱动...
hive-jdbc-1.1.0-cdh5.4.5-standalone.jar Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at com.trs.gateway.commons.hive.HiveFeature.getConnection...
Apache Hive 是一个数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供简单的类 SQL 查询功能。它可以将类 SQL 的语法转换为 MapReduce 任务运行。Hive 可以对数据进行查询、过滤、合并等操作,并...
在Java编程环境中,访问Hive数据库通常涉及到一系列的依赖库,这些库提供了与Hive通信所需的接口和功能。由于在你的场景中不使用Maven这样的项目管理工具,你需要手动收集和管理这些jar包。以下是对标题和描述中涉及...
f) 将数据从 MySQL 加载到 Hive:`load data inpath 'mysql://localhost:3306/mydb' into table mytable;` 通过以上步骤,我们已经成功安装和配置了 Hive 环境,并进行了一些基本的 Hive 操作。Hive 是一个功能强大...
Hive是一种基于Hadoop的数据仓库工具,它提供了一种SQL-like的查询语言,称为HiveQL,用于查询和分析...- **数据模型**:Hive支持表(Table)、外部表(External Table)、分区(Partition)和桶(Bucket)等数据模型。
在IT行业中,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)对大规模数据进行分析。DataGrip是JetBrains公司开发的一款强大的数据库和SQL集成开发环境(IDE),它支持多种...
hive表ddl操作(一)第1关:Create/Alter/Drop 数据库 创建数据库的语法为: DATABASE|SCHEMA:用于限定创建数据库或数据库模式 IF NOT EXISTS:目标对象不存在时才执行创建操作(可选) COMMENT:起注释说明作用...