2016-08-11 2 views
3

파이썬 스크립트를 사용하여 로컬 서버에서 장기 실행 (~ 10 시간) 하이브 쿼리를 실행했습니다. 내 타겟 하이브 서버가 aws 클러스터에 있습니다.원격 기계에서 장기 실행 하이브 쿼리를 실행

나는 ('<command>')를

paramiko, exec_command ('하이브 -e "<command>"') 두 경우 모두

을 실행, 그것은 pyhs2를 사용하여 실행하려고했습니다 내 쿼리가 하이브 서버에서 실행 중이며 성공적으로 완료됩니다. 문제는 심지어 부모 파이썬 스크립트가 반환 값을 기다리기를 계속하면서 성공적으로 쿼리를 완료 한 후 무한 시간 동안 Interruptible sleep (S1) 상태로 유지됩니다!

어쨌든 나는 pyhs2 또는 paramiko를 사용하여 스크립트 작업을 훌륭하게 할 수 있습니까? os는 파이썬에서 사용할 수있는 더 좋은 옵션이 있습니까?

+0

'pyhs2'를 모르지만'paramiko'를 사용하면'exec_command()'함수가 즉각적으로 반환되므로 반환 값 *을 기다리는 것을 계속 이해할 수 없습니다. – pynexj

+0

심지어 pyhs2 및 pyhive 라이브러리와 유사한 문제에 직면하고있다, 어떤 제안이나 해결 방법? –

답변

0

앞서 언급했듯이 성능 기반 환경에서도 비슷한 문제가 있습니다. 필자는 HIVE TEZ 실행 엔진을 사용하여 쿼리를 실행하기 위해 PYHS2 모듈을 사용하고있었습니다. TEZ는 많은 로그를 생성합니다 (기본적으로 초 단위로 표시). 로그는 STDOUT 변수에 캡처되고 조회가 완료되면 출력에 제공됩니다.

for line in iter(lambda: stdout.readline(2048), ""): 
    print line 

을하지만 당신은 PARAMIKO 또는 직물을 사용하여 클러스터 네이티브 연결을 사용하고 CLI를 통해 하이브 명령을 실행해야합니다 : 아래 그림과 같이 극복하는 방법은 그것이 생성 될 때와 같은 출력을 스트리밍하는 것입니다 또는 beeline.