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

Другие вопросы по тегам