java - 无法在 Hive 中实例化元数据.SessionHiveMetaStoreClient(Ubuntu 16.04)

标签 java mysql ubuntu hive metastore

我正在尝试在 Ubuntu 16.04 上使用 mysql 设置 hive 2.3.0。我已经安装了 Hadoop 并且运行良好。我可以进入配置单元控制台,但是没有执行任何命令,而是出现错误:

SemanticException org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.RuntimeException:无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

这是我的hive-site.xml

<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore?useSSL=true;</value>
  <description>metadata is stored in a MySQL server</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>MySQL JDBC driver class</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser</value>
  <description>user name for connecting to mysql server</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hivepassword</value>
  <description>password for connecting to mysql server</description>
</property>
</configuration>

我还使用 this 在 mysql 中创建了元存储数据库链接。

Error Image

最佳答案

我想出了解决办法。 Metastore 未实例化的问题是由于 mysql 中的重复键造成的。而不是从 mysql 获取 hive 模式。使用这个:hive --service Metastore

我也更新了hive-site.xml:

<configuration>
 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore?useSSL=false</value>
  <description>metadata is stored in a MySQL server</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>MySQL JDBC driver class</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>Username</value>
  <description>user name for connecting to mysql server</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>Password</value>
  <description>password for connecting to mysql server</description>
</property>
<property>
 <name>datanucleus.autoCreateSchema</name>
 <value>true</value>
</property>
<property>
 <name>datanucleus.fixedDatastore</name>
 <value>true</value>
</property>
<property>
 <name>datanucleus.autoCreateTables</name>
 <value>True</value>
</property>

还可以使用schematool查看完整的堆栈跟踪: schematool -initSchema -dbType mysql --verbose

关于java - 无法在 Hive 中实例化元数据.SessionHiveMetaStoreClient(Ubuntu 16.04),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45647794/

相关文章:

java - HttpServlet - 将上下文添加到 html 页面

java - 迁移到 OpenJDK 11,哪个版本的 MySql 连接器与 java 11 兼容?

mongodb - 通过 shell 脚本执行 mongo 命令

javascript - 如何让用户选择一个球员位置并让 mySQL 显示数据库中每个球员的位置?

linux - 干净的 Linux 安装后 MongoDB 不会启动

python - 如何在 Ubuntu 上更新 virtualenv?

java - 是否可以使用匿名内部类和访问其中方法的机制来实例化抽象类

java - 如何在 JBoss EAP6/AS7 中应用安全约束前的过滤器

java - 将 Spring Boot fat jar 拆分为两个 jar (app/libs)

mysql - 实现基于父ID关系的查询