Как выполнить предварительные запросы в Python, используя Pyhive?
Я пытаюсь выполнить предварительный запрос в Python, используя библиотеку Pyhive, но приходит ошибка max retries. Я запускаю его в ноутбуке Jupyter локально (ноутбук). Я думаю, что он не может подключиться к узлу Presto. Я использую кластер Azure hdinsight и установил приложение Presto на головном узле (с использованием распределения starburst). Я использовал имя пользователя и пароль кластера, а также я попробовал имя пользователя и пароль ssh головного узла, но ничего не работает. Ниже мой код:
from pyhive import presto
conn= presto.connect(
host='clustername-ssh.azurehdinsight.net',
port=8085,
username='sshuser'
password='sshpassword',
protocol='https'
).cursor()
conn.execute('SELECT * FROM hive.default.parquettest limit 1')
Ошибка, которую я получаю:
ConnectionError: HTTPConnectionPool (host = 'sm-hdinsight01-ssh.azurehdinsight.net', port = 8085): превышено максимальное количество попыток с помощью оператора url: /v1/ (вызвано NewConnectionError(': не удалось установить новое соединение: [Errno 110] Время соединения истекло',))
Но когда я запускаю его в терминале головного узла, он работает:
from pyhive import presto
conn= presto.connect(
host='localhost',
port=8085).cursor()
conn.execute('SELECT * FROM hive.default.parquettest limit 1')
Я думаю, что мне здесь не хватает какой-то важной вещи. пожалуйста помоги.
0 ответов
Звучит как проблема с разрешением / аутентификацией. В настоящее время я использую ноутбук jupyter на своем локальном компьютере, чтобы запросить кластер компании presto, как это, используяprestodb
библиотека.
так в основном:
import prestodb
conn=prestodb.dbapi.connect(
host='presto.bar.foo.com',
port=80, user='foo',
password='bar'
catalog='hive',
schema='default',
)
cur = conn.cursor()
cur.execute(
'SELECT * FROM "schema"."db" limit 10')
records = cur.fetchall()
print(records[0])