2014-05-22 1 views
-1

Stackoverflow를 점검했지만 도움을 찾을 수 없어 그 이유는 새 질문을 올리는 이유입니다..h 파일에서 -e 옵션을 사용하여 hiveql을 실행하는 이상한 문제

문제는 .sh 파일에서 -e 옵션을 사용하여 hiveql을 실행하는 것과 관련이 있습니다.

하이브를 $ bin/hive으로 실행하면 모든 것이 올바르게 작동하고 모든 데이터베이스와 테이블이 올바르게 표시됩니다.

$ ./hive 또는 $ hive (경로 변수에 설정된대로) 하이브를 실행하는 경우 또는 $HIVE_HOME/bin/hive 기본 데이터베이스 만 테이블 정보없이 표시됩니다.

.sh 파일에서 하이브를 학습하고 $HIVE_HOME/bin/hive -e을 사용하여 하이브 명령을 실행하려고했지만 항상 데이터베이스를 찾을 수 없습니다.

그래서 나는 그것이 메타 데이터를 읽는 것과 관련된 것이지만 나는 이런 종류의 행동을 이해할 수 없다는 것을 알고 있습니다.

그러나 hadoop 명령은 어디에서나 정상적으로 작동합니다. 다음은

한 명령 메신저 .sh 파일에서 실행하려고

$HIVE_HOME/bin/hive -e 'LOAD DATA INPATH hdfs://myhost:8040/user/hduser/sample_table INTO TABLE rajen.sample_table' 

정보 : 나는 하이브-0.13.0가, 하둡은-1.2.1

사람이 PL 설명 할 수 사용하고 있습니다

이 문제를 해결하는 방법이나이 문제를 극복하는 방법은 무엇입니까?

답변

2

먼저 하이브 예측로드 문 경로에 따옴표가 있어야합니다. 첫번째 쉘 - HIVE_HOME/빈/하이브 -e에서 이것을 시도 "LOAD 자료 INPATH '/ 사용자/hduser/sample_table'표 rajen.sample_table INTO"

또는 test.hql 파일 및 테스트 $에 명령을 넣어 rajen.sample_table 표 INTO 하이브 -f test.hql


--test.hql

LOAD 자료 INPATH '/ 사용자/hduser/sample_table'


+0

실제로 HIVE_HOME/bin/hive -e "show databases"와 같은 간단한 명령은 작동하지 않지만 bin/hive -e "show databases"로 실행하면 동일한 명령이 작동합니다. 어쨌든 나는 .sh 파일에서 명령을 수정했다. 그런 어리석은 실수에 관심을 가져 주셔서 감사합니다. –

0

마침내 문제를 해결할 수있었습니다.

문제는 하이브 -e 명령을 트리거하는 데 사용되는 메타 데이터 _db 복사본의 새 복사본을 만드는 데 사용되는 하이브 메타 데이터 토큰 _db의 기본 더비 설정을 유지한다는 것이 었습니다.

그래서 전 세계적으로 된 mysql에서 메타 데이터 저장소를 만들었고 이제는 하이브 -e 명령을 트리거 한 곳에서 동일한 메타 데이터 저장소 db가 사용되고있었습니다.