PyHive не может получить журналы с HiveServer2 при работе в асинхронном режиме
У меня возникла странная проблема с PyHive, выполняющим запрос Hive в асинхронном режиме. Внутри PyHive использует клиент Thrift для выполнения запроса и получения журналов (вместе со статусом выполнения). Я не могу получить журналы запроса Hive (отображение / сокращение задач и т. Д.).
cursor.fetch_logs()
возвращает пустую структуру данных
Вот фрагмент кода
rom pyhive import hive # or import hive or import trino
from TCLIService.ttypes import TOperationState
def run():
cursor = hive.connect(host="10.x.y.z", port='10003', username='xyz', password='xyz', auth='LDAP').cursor()
cursor.execute("select count(*) from schema1.table1 where date = '2021-03-13' ", async_=True)
status = cursor.poll(True).operationState
print(status)
while status in (TOperationState.INITIALIZED_STATE, TOperationState.RUNNING_STATE):
logs = cursor.fetch_logs()
for message in logs:
print("running ")
print(message)
# If needed, an asynchronous query can be cancelled at any time with:
# cursor.cancel()
print("running ")
status = cursor.poll().operationState
print
cursor.fetchall()
Курсор может правильно получить OperationState, но не может получить журналы. Есть ли что-нибудь на стороне HiveServer2, что нужно настроить?
заранее спасибо
1 ответ
Замыкание цикла здесь на случай, если у кого-то такая же или аналогичная проблема с ульем.
В моем случае проблема заключалась в конфигурации hiveserver. Сервер Hive не будет передавать журналы в потоковом режиме, если операция ведения журнала не включена. Ниже приведен список, который я настроил.
hive.server2.logging.operation.enabled
-
true
hive.server2.logging.operation.level
EXECUTION
(базовое ведение журнала - есть другие значения, которые увеличивают уровень ведения журнала)
hive.async.log.enabled
false
hive.server2.logging.operation.log.location