Я использую клиент Python Apache Hive (https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-Python) для запуска запросов на сервере Shark.Python Hive query ограничен 100
Проблема в том, что я запускаю запросы, как правило, в CLI Shark. Я получаю полный набор результатов, но когда я использую клиент Hive Python, он возвращает только 100 строк. Для моего запроса выбора нет ограничений.
Shark CLI:
[localhost:10000] shark> SELECT COUNT(*) FROM table;
46831
Python:
import sys
from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
try:
transport = TSocket.TSocket('localhost', 10000)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute("SELECT * from table")
hdata = client.fetchAll()
transport.close()
....
In [97]: len(hdata)
Out[97]: 100
Как ни странно, когда я бегу COUNT (*) в коде Python я получаю:
In [104]: hdata
Out[104]: ['46831']
Есть установок файл или переменную, к которой я могу получить доступ, чтобы разблокировать этот предел?
Вы имеете в виду, что maxRows установлен на метод fetchAll()? – greenafrican
@greenAfrican: Да, точно. Если вы следуете второй ссылке, вы найдете соответствующий вызов 'driver.setMaxRows (numRows);' in 'fetchN()' – JensG
Спасибо. Решив это, используйте временную кэшированную таблицу, а затем запустите на ней COUNT, а затем fetchN (count_var). Благодарю. – greenafrican