2016-12-17 4 views
1
내가 하이브 쿼리를 실행하는 동안이로드 항아리의 위치를 ​​확인하기 위해 하이브 서비스의 클래스 경로를 확인해야

의 클래스 경로를 인쇄하는 방법.하이브 - 하이브 서비스

나는 새 마루 형식의 데이터를 읽을 최신 마루 항아리에 하이브의 마루 항아리를 업데이트합니다.

hive lib 위치 ​​(/usr/hdp/2.5.XX/hive/lib/)에서 jar 파일을 업데이트했지만 다른 위치의 이전 jar 파일은 계속 사용 중입니다.

다음 명령을 사용하여 jar를 나열했지만 출력은 표시되지 않았습니다.

하이브> 목록 항아리;

내가>

항아리 < 'jar 파일을 추가

를 사용하여 새 항아리를 추가 시도했지만 여전히 오래된 항아리를 따기입니다.

하이브 서비스에 사용되는 classpath 또는 jar를 찾는 방법이 있습니까?

답변

0

실행

vi /usr/bin/hive 

당신은 다음과 같은 것을 볼 수 하이브 명령 위치를는/usr/빈/(귀하의 하이브 위치)에서

which hive 

열기 '하이브'파일을 얻을 수 있습니다. 다음과 같이 하이브 파일의 백업을 가져 와서 exec가 끝나기 전에 HADOOP_CLASSPATH에 대한 echo 명령을 추가하십시오.

#!/bin/bash 

if [ -d "/usr/hdp/2.5.0.0-1245/atlas/hook/hive" ]; then 
if [ -z "${HADOOP_CLASSPATH}" ]; then 
    export HADOOP_CLASSPATH=/usr/hdp/2.5.0.0-1245/atlas/hook/hive/* 
else 
    export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:/usr/hdp/2.5.0.0-1245/atlas/hook/hive/* 
fi 
fi 

... 

if [ -z "${HADOOP_CLASSPATH}" ]; then 
export HADOOP_CLASSPATH=${HCATALOG_JAR_PATH} 
else 
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCATALOG_JAR_PATH} 
fi 

에코 "클래스 경로 = $ HADOOP_CLASSPATH"

exec "${HIVE_HOME}/bin/hive.distro" "[email protected]" 

실행 하이브 명령은 클래스 경로를 표시합니다.

쪽모이 세공 문제는 환경 변수에 새 마루 항아리 위치를 추가하여 해결되었다 'HADOOP_CLASSPATH'나는 보조 경로의 항아리 경로를 추가하는 시도하지만 새로운 하나를 선택하지 않은

1

jar 경로 사용 명령을 나열하려면 list jarsmore details;

및 하이브-site.xml의 하이브를 site.xml의 (add auxiliary jar)

샘플의 위치를 ​​hive.aux.jars.path에 항아리를 추가

<property> 
<name>hive.aux.jars.path</name> 
<value>file://localpath/yourjar.jar</value> 
</property> 

업데이트

하이브 hive.aux.jars.path 속성을 확인하고 실제 경로 언급을 찾으십시오.

Add <jar> full path. 
+0

. 시도한 목록 jars; 그러나 jar가 추가 된 항아리 만 표시되는 항아리가 없습니다. '항아리 추가'명령 – Munesh

+0

당신은 서비스를 재개했습니다. –

1

당신이 마루의 이전 버전을 포착해야하는 경우, 다음이 기계에 있어야합니다, 그래서 당신은 단지 파일 시스템의 모든 마루 항아리 찾아보실 수 있습니다 : find/-name 'parquet-*.jar'

당신이 만약 컴퓨터에서 사용할 수있는 특정 jar를 확인하려면이 목적으로 lsof을 사용해보십시오. lsof | grep parquet | grep jar으로 시작하여 필요한 경우 필터링을 세부 조정하십시오. 명령 아래

+0

쪽모이 주전자를 찾으려고했지만 찾을 수 없습니다. 항아리가 마루 * .jar로 지명되지 않는 것처럼 보입니다. – Munesh