[빅 데이터가 --hive 학습은] TABLENAME 오류 문제에서 선택 *에서 실행 하이브.

가상 머신에서 빌드 하이브 후, TABLENAME 시간 오류에서 선택 *의 구현에 특정 오류 메시지가 그대로 다음, 테이블을 만들 :

하이브> 선택 * 로부터 hive_01;
실패 : 확인할 수 없습니다 SemanticException 경우 HDFS : // 마스터 : 9000 / 사용자 / 하이브 / 창고 / hive_1.db / hive_01 암호화 : java.lang.IllegalArgumentException가 : java.net.UnknownHostException : 마스터

대략 주어지는 의미는 : hive_1 라이브러리가 팁의 뒷면 알 수없는 호스트 이름이며, 잠겨 : 마스터, 프롬프트 오류에있어서 hive_1 라이브러리를 만들 지시를 할 때 경로 기본 저장

HDFS : // 마스터 : 9000 / 사용자 / 하이브 / 창고 / hive_1.db / hive_01, 하지만 지금이, 즉 경로를 찾을 수 없습니다 사실 : 알 수없는 호스트 이름 : 마스터, 호스트 이름의 네임 노드를 설정하기 전에 이런 식으로 생각 마스터에 대한 다음 호스트 이름, 네임 노드를 변경 
벌집이되어 설정 메타 데이터를 mysql을 저장했기 때문에, 큰 변화이다이 같은 다음과 경우 기본 경로 MySQL은, 두 개의 테이블을 기록 수정할 필요가있다 :
MySQL의> 선택 * 로부터 DBS;
+ ------- + ----------------------- + ----------------- --------------------------------- + --------- + ------ ------ + ------------ + ----------- +
| DB_ID | DESC | DB_LOCATION_URI | NAME | OWNER_NAME | OWNER_TYPE | CTLG_NAME |
+ ------- + ----------------------- + ----------------- --------------------------------- + --------- + ------ ------ + ------------ + ----------- +
|     1 | 하이브 데이터베이스를 기본 | HDFS : // 마스터 : 9000 / 사용자 / 하이브 / 창고 | 기본 | 공개 | 역할 | 하이브 | 
|     2 | NULL | HDFS : // 마스터 : 9000 / 사용자 / 하이브 / 창고 / hive_1.db | hive_1 | 루트 | USER | 하이브 | 
+ ------- + ----------------------- + ----------------- --------------------------------- + --------- + ------ ------ + ------------ + ----------- +
MySQL의> 선택 * 에서 SDS;
+ ------- + ------- + --------------------------------- --------- + --------------- + ------------------------ --- + ---------------------------------------------- ------------ + ------------- + ----------------------- ------------------------------------- + ---------- +
| SD_ID | CD_ID | INPUT_FORMAT | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | 위치 | NUM_BUCKETS | OUTPUT_FORMAT | SERDE_ID |
+ ------- + ------- + --------------------------------- --------- + --------------- + ------------------------ --- + ---------------------------------------------- ------------ + ------------- + ----------------------- ------------------------------------- + ---------- +
|     1 |     1 | org.apache.hadoop.mapred.TextInputFormat | | | HDFS : // 마스터 : 9000 / 사용자 / 하이브 / 창고 / hive_1.db / hive_01 | -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | 1 |
+ ------- + ------- + --------------------------------- --------- + --------------- + ------------------------ --- + ---------------------------------------------- ------------ + ------------- + ----------------------- ------------------------------------- + ---------- +
1 세트 ( 0.00 초)

 

DBS 보정 값 테이블 DB_LOCATION_URI

MySQL의> 업데이트 DBS가 설정 DB_LOCATION_URI는 REPLACE = ( ' DB_LOCATION_URI를 ' , ' HDFS를 // 마스터 : 9000 / 사용자 / 하이브 / 창고 ' , ' HDFS를 // 네임 노드 : 9000 / 사용자 / 하이브 / 창고 ' )      
     -> ;
쿼리 확인, 2 개 행이 영향 ( 0.05 초)
행 일치 : 2   변경 : 2 개   경고 : 0

MySQL의 > 선택 * 로부터 DBS;   
+ ------- + ----------------------- + ----------------- + --------- + ------------ + ------------ + ----------- + | DB_ID | DESC | DB_LOCATION_URI | NAME | OWNER_NAME | OWNER_TYPE | CTLG_NAME | + ------- + ----------------------- + ----------------- + --------- + ------------ + ------------ + ----------- + | 1 | 하이브 데이터베이스를 기본 | DB_LOCATION_URI | 기본 | 공개 | 역할 | 하이브 | | 2 | NULL | DB_LOCATION_URI | hive_1 | 루트 | USER | 하이브 | + ------- + ----------------------- + ----------------- + --------- + ------------ + ------------ + ----------- + 2 세트 ( 0.00 초)

위치 필드 SDS 테이블의 값을 수정

MySQL은> 업데이트 SDS 세트 위치 = (LOCATION, REPLACE ' HDFS를 // 마스터 : 9000 / 사용자 / 하이브 / 창고 / hive_1.db / hive_01 ' , ' HDFS를 // 네임 노드 : 9000 / 사용자 / 하이브 / 창고 / hive_1한다. DB / hive_01 ' );     
쿼리 확인, 1 개 행이 영향 ( 0.08 초)
행 유사한 : 1   변경 : 1 개   경고 : 0

MySQL의 > 선택 * 에서 SDS;    

+ ------- + ------- + --------------------------------- --------- + --------------- + ------------------------ --- + ---------------------------------------------- -------------- + ------------- + --------------------- --------------------------------------- + ---------- + | SD_ID | CD_ID | INPUT_FORMAT | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | 위치 | NUM_BUCKETS | OUTPUT_FORMAT | SERDE_ID | + ------- + ------- + --------------------------------- --------- + --------------- + ------------------------ --- + ---------------------------------------------- -------------- + ------------- + --------------------- --------------------------------------- + ---------- + | 1 | 1 | org.apache.hadoop.mapred.TextInputFormat | | | HDFS : // 네임 노드 : 9000 / 사용자 / 하이브 / 창고 / hive_1.db / hive_01 | -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | 1 | + ------- + ------- + --------------------------------- --------- + --------------- + ------------------------ --- + ---------------------------------------------- -------------- + ------------- + --------------------- --------------------------------------- + ---------- + 1 세트 ( 0.01 초)

수정은 하이브에 쿼리 작업을 실행, 다시 시작 MySQL의 서비스를 완료 :

하이브> 선택 * 로부터 hive_01;
확인
시간 촬영 : 2.329 
하이브 >

OK ...... 모든 것이 정상입니다.

이 예는 등 기본 포트 HDFS, 호스트 이름을 수정 적용 할 수 있습니다.

추천

출처www.cnblogs.com/kylinku/p/12129540.html