impala dbapi python3 thriftpy2 hiveserver2 cannot read from cursor after query hive database

Viewed 198

Using Python 3.8, trying to connect to Hive and run queries but receiving the following error When execute the query and trying to read from cursor receive the following error

../connector/Connector.py:129: in perform_query
    print(cursor.description)
../venv/lib/python3.8/site-packages/impala/hiveserver2.py:187: in description
    schema = self._last_operation.get_result_schema()
../venv/lib/python3.8/site-packages/impala/hiveserver2.py:1265: in get_result_schema
    resp = self._rpc('GetResultSetMetadata', req)
../venv/lib/python3.8/site-packages/impala/hiveserver2.py:992: in _rpc
    response = self._execute(func_name, request)
../venv/lib/python3.8/site-packages/impala/hiveserver2.py:1009: in _execute
    return func(request)
../venv/lib/python3.8/site-packages/thriftpy2/thrift.py:219: in _req
    return self._recv(_api)
../venv/lib/python3.8/site-packages/thriftpy2/thrift.py:231: in _recv
    fname, mtype, rseqid = self._iprot.read_message_begin()
../venv/lib/python3.8/site-packages/thriftpy2/protocol/binary.py:372: in read_message_begin
    api, ttype, seqid = read_message_begin(
../venv/lib/python3.8/site-packages/thriftpy2/protocol/binary.py:165: in read_message_begin
    sz = unpack_i32(inbuf.read(4))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

buf = b''

    def unpack_i32(buf):
>       return struct.unpack("!i", buf)[0]
E       struct.error: unpack requires a buffer of 4 bytes

The code is

self.instance.conn = connect(host='host',
                                     port=10000, auth_mechanism='GSSAPI',
                                     user='username',
                                     password='password',
                                     kerberos_service_name='hive')


    def perform_query(self, query):
        try:
            cursor = self.instance.conn.cursor()
            cursor.execute(query)
            print(cursor.description)

            for row in cursor:
                print(row)
0 Answers
Related