복붙노트

[HADOOP] 하이브 셸 모드의 SemanticException

HADOOP

하이브 셸 모드의 SemanticException

하이브 예외

내 컴퓨터에 Hadoop 3.0.0과 Hive 2.3.1을 설치했습니다. Parallely 나는 MySQL을 설치하고 SQL 셸 모드에서 SQL 명령으로 작업하고 잘 작동합니다. 그러나 하이브 셸 모드에서 쿼리를 실행하는 동안 다음 오류가 발생합니다.

하이브> 테이블 saurzcode (id int, name string) 만들기;

FAILED : SemanticException org.apache.hadoop.hive.ql.metadata.HiveException : java.lang.RuntimeException : org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient를 인스턴스화 할 수 없습니다.

실패 이유를 알려주십시오.

또한 다음 쿼리를 명확히하십시오.

하이브 쉘 모드와 mysql 쉘 모드의 차이점.

2) 하이브 용 Myast 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. ==============================

    1.귀하의 원래 예외는 아래 오류 로그에서 볼 수있는 것처럼 인증 플러그인 'caching_sha2_password'을 (를)로드 할 수 없습니다.

    귀하의 원래 예외는 아래 오류 로그에서 볼 수있는 것처럼 인증 플러그인 '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의 "CREATE USER"매개 변수와 함께 "mysql_native_password"매개 변수를 사용할 수 있습니다. 해결하자.

    하이브 메타 저장소 사용자를 생성하는 동안 아래 명령을 따르십시오.

    CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    GRANT ALL PRIVILEGES ON metastore_db.* TO 'hive'@'%';
    
  2. from https://stackoverflow.com/questions/50231212/semanticexception-in-hive-shell-mode by cc-by-sa and MIT license