Hive Shell模式中的SemanticException

时间:2018-05-08 10:15:38

标签: hadoop hive

hive exception

我在我的电脑上安装了Hadoop 3.0.0和Hive 2.3.1。平行地我安装了mysql并在sql shell模式下使用sql命令并且工作正常。但是在Hive shell模式下执行查询时,我收到以下错误,

蜂房> create table saurzcode(id int,name string);

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

请告诉我失败的原因。

另请注明以下疑问,

1)hive shell模式与mysql shell模式之间的区别。

2)为什么要为Hive配置MySql Metastore?

请找到hive-site.xml配置

<configuration>
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hivelogin</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>apache</value>

</property>
</configuration>

1 个答案:

答案 0 :(得分:0)

您的原始例外是 无法加载身份验证插件'caching_sha2_password',如下面的错误日志所示。

org.apache.hadoop.hive.metastore.HiveMetaStore - Retrying creating default database after error: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true
        , username = hivelogin. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

<强>解决方案: 发生此错误的原因是所有新的MySQL版本都添加了名为“ caching_sha2_password ”的附加密码插件,并且必须在MySQL服务器上正确配置,否则您只需使用“ mysql_native_password

创建配置Meta Store用户时,只需按照以下命令操作即可。

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON metastore_db.* TO 'hive'@'%';