[HADOOP] Pyhive를 사용하여 원격 하이브에 액세스하는 방법
HADOOPPyhive를 사용하여 원격 하이브에 액세스하는 방법
이 링크를 사용하여 원격 하이브에 연결을 시도합니다. 아래는 사용 된 코드입니다. 받은 오류 메시지도 아래에 나와 있습니다.
파이썬을 통해 하이브에 접근하는 방법?
암호
from pyhive import hive
conn = hive.Connection(host="10.111.22.11", port=10000, username="user1" ,database="default")
오류 메시지
Could not connect to any of [('10.111.22.11', 10000)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/anaconda3/lib/python3.6/site-packages/pyhive/hive.py", line 131, in __init__
self._transport.open()
File "/opt/anaconda3/lib/python3.6/site-packages/thrift_sasl/__init__.py", line 61, in open
self._trans.open()
File "/opt/anaconda3/lib/python3.6/site-packages/thrift/transport/TSocket.py",line 113, in open
raise TTransportException(TTransportException.NOT_OPEN, msg)
thrift.transport.TTransport.TTransportException: Could not connect to any of [('10.111.22.11', 10000)]
성공적인 연결을위한 다른 요구 사항은 무엇입니까? 필자는 서버에 직접 연결 (퍼티 사용)하고 하이브를 실행할 수 있습니다. 하지만 다른 서버 X에서이 오류가 발생했습니다. 또한 서버 X에서 하이브 서버로 ping 할 수 있습니다.
포트 번호가 문제가 될 수 있습니까? 올바른 포트 번호를 어떻게 확인합니까?
아래 답변에서 논의했듯이 나는 hiveserver2를 시작하려했습니다. 그러나 명령이 제대로 작동하지 않는 것 같습니다. 어떤 도움이라도 대단히 감사합니다.
또한 포트 내가 하이브 셸에서 쿼리를 실행할 때 로그에서 볼 8088. 이것이 10000 대신 포트 있어야 궁금 (둘 다 어쨌든 작동하지 않았다)
해결법
-
==============================
1.그것은 pyhive를 사용하여 작동하게 만들 수 없습니다. paramiko insted를 사용해야했다. 아래는 샘플 코드입니다.
그것은 pyhive를 사용하여 작동하게 만들 수 없습니다. paramiko insted를 사용해야했다. 아래는 샘플 코드입니다.
import os import paramiko import time ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts"))) ssh.connect('1.1.1.1', username='uid', password='pwd') sshin, sshout, ssherr= ssh.exec_command('hive -e "create table test(key varchar(10),keyval varchar(200))"')
-
==============================
2.원격 Hive 호스트에서 HiveServer2 프로세스를 시작해야합니다. 10000이 기본 포트 x 호입니다.
원격 Hive 호스트에서 HiveServer2 프로세스를 시작해야합니다. 10000이 기본 포트 x 호입니다.
HiveServer2를 시작하려면이 명령을 사용하십시오.
$HIVE_HOME/bin/hiveserver2
-
==============================
3.pyhive를 사용하여 원격 하이브 테이블에 액세스하려면 아래 코드를 시도하십시오.
pyhive를 사용하여 원격 하이브 테이블에 액세스하려면 아래 코드를 시도하십시오.
from pyhive import hive import pandas as pd #Create Hive connection conn = hive.Connection(host="10.111.22.11", port=10000, username="user1") # Read Hive table and Create pandas dataframe df = pd.read_sql("SELECT * FROM db_Name.table_Name limit 10", conn) print(df.head())
from https://stackoverflow.com/questions/44027519/how-to-access-remote-hive-using-pyhive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Python을 사용하여 HDFS에서 파일 이름 목록보기 (0) | 2019.07.29 |
---|---|
[HADOOP] Spark 클러스터의 S3에서 읽기 작업을 수행하면 IllegalAccessError가 발생합니다 : MutableCounterLong [duplicate] 메소드에 액세스하려고했습니다. (0) | 2019.07.29 |
[HADOOP] hdfs에서 파일을 읽는 방법 [duplicate] (0) | 2019.07.29 |
[HADOOP] Hadoop 2.9.2, Spark 2.4.0 AWS s3a 버킷 액세스 (0) | 2019.07.29 |
[HADOOP] Spark를 사용하여 병렬로 데이터 집합 캐시 및 쿼리 (0) | 2019.07.29 |