Skip to content

Connect to Apache Hive endpoint in OCI BDS #22316

@davidkhala

Description

@davidkhala

I have setup an Oracle Cloud Big Data Service to privide a Hive. I want to connect it.

How to reproduce the bug

  1. Go to 'Connect a database'
  2. Choose 'Apache Hive' from 'SUPPORTED DATABASES' dropdown
  3. Input the SQLALCHEMY URI as hive://hive@168.138.166.53:10000
  4. Click "Test Connection", it will success
  5. Click "Connect"
  6. See error

Expected results

Silent success

Actual results

An error popup
An error occurred while fetching databases: Object of type bytes is not JSON serializable

image

Screenshots

image

Environment

(please complete the following information):

  • browser type and version: MS Edge
  • superset version: master
  • python version: docker image inline
  • node.js version: docker image inline
  • any feature flags active:

Checklist

Make sure to follow these steps before submitting your issue - thank you!

  • I have checked the superset logs for python stacktraces and included it here as text if there are any.
  • I have reproduced the issue with at least the latest released version of superset.
  • I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context

python stacktraces

superset_app          | 2022-12-02 12:45:56,017:INFO:pyhive.hive:SHOW SCHEMAS
superset_app          | 2022-12-02 12:45:56,017:DEBUG:pyhive.hive:TExecuteStatementReq(sessionHandle=TSessionHandle(sessionId=THandleIdentifier(guid=b'\xff\xeeQ\xdc0\xe2F\xc7\xbe\xd7hU\xad\x103\xb1', secret=b'\xdeaVP\xc6\x07G\xc3\x823DOG\x9b\xc9\x02')), statement='SHOW SCHEMAS', confOverlay=None, runAsync=False, queryTimeout=0)
superset_app          | 2022-12-02 12:45:56,110:DEBUG:pyhive.hive:TExecuteStatementResp(status=TStatus(statusCode=0, infoMessages=None, sqlState=None, errorCode=None, errorMessage=None), operationHandle=TOperationHandle(operationId=THandleIdentifier(guid=b'\xefx\\\x88\xa1\xd8@m\x9a=\x89\x1f\xd6I\x95\x81', secret=b'-K\x01\x93G\x11N\x91\x8d\xc3\xce\x87\xd9\x19\x14\xfc'), operationType=0, hasResultSet=True, modifiedRowCount=None))
superset_app          | 2022-12-02 12:45:56,111:DEBUG:pyhive.hive:TGetResultSetMetadataResp(status=TStatus(statusCode=0, infoMessages=None, sqlState=None, errorCode=None, errorMessage=None), schema=TTableSchema(columns=[TColumnDesc(columnName='database_name', typeDesc=TTypeDesc(types=[TTypeEntry(primitiveEntry=TPrimitiveTypeEntry(type=7, typeQualifiers=None), arrayEntry=None, mapEntry=None, structEntry=None, unionEntry=None, userDefinedTypeEntry=None)]), position=1, comment='from deserializer')]))
superset_app          | 2022-12-02 12:45:56,113:DEBUG:pyhive.hive:TFetchResultsResp(status=TStatus(statusCode=0, infoMessages=None, sqlState=None, errorCode=None, errorMessage=None), hasMoreRows=False, results=TRowSet(startRowOffset=0, rows=[], columns=[TColumn(boolVal=None, byteVal=None, i16Val=None, i32Val=None, i64Val=None, doubleVal=None, stringVal=TStringColumn(values=['ctm', 'default', 'information_schema', 'sys'], nulls=b'\x00'), binaryVal=None)], binaryColumns=None, columnCount=None))
superset_app          | 2022-12-02 12:45:56,113:DEBUG:pyhive.hive:TFetchResultsResp(status=TStatus(statusCode=0, infoMessages=None, sqlState=None, errorCode=None, errorMessage=None), hasMoreRows=False, results=TRowSet(startRowOffset=0, rows=[], columns=[TColumn(boolVal=None, byteVal=None, i16Val=None, i32Val=None, i64Val=None, doubleVal=None, stringVal=TStringColumn(values=[], nulls=b'\x00'), binaryVal=None)], binaryColumns=None, columnCount=None))
superset_app          | 2022-12-02 12:45:56,123:DEBUG:pyhive.hive:TCloseOperationResp(status=TStatus(statusCode=0, infoMessages=None, sqlState=None, errorCode=None, errorMessage=None))
superset_app          | 2022-12-02 12:45:56,126:DEBUG:pyhive.hive:TCloseSessionResp(status=TStatus(statusCode=0, infoMessages=None, sqlState=None, errorCode=None, errorMessage=None))
superset_app          | 2022-12-02 12:45:56,165:ERROR:root:Object of type bytes is not JSON serializable
superset_app          | Traceback (most recent call last):
superset_app          |   File "/usr/local/lib/python3.8/site-packages/flask_appbuilder/api/__init__.py", line 86, in wraps
superset_app          |     return f(self, *args, **kwargs)
superset_app          |   File "/app/superset/views/base_api.py", line 114, in wraps
superset_app          |     raise ex
superset_app          |   File "/app/superset/views/base_api.py", line 111, in wraps
superset_app          |     duration, response = time_function(f, self, *args, **kwargs)
superset_app          |   File "/app/superset/utils/core.py", line 1604, in time_function
superset_app          |     response = func(*args, **kwargs)
superset_app          |   File "/app/superset/utils/log.py", line 265, in wrapper
superset_app          |     value = f(*args, **kwargs)
superset_app          |   File "/app/superset/views/base_api.py", line 84, in wraps
superset_app          |     return f(self, *args, **kwargs)
superset_app          |   File "/app/superset/databases/api.py", line 281, in post
superset_app          |     return self.response(201, id=new_model.id, result=item)
superset_app          |   File "/usr/local/lib/python3.8/site-packages/flask_appbuilder/api/__init__.py", line 704, in response
superset_app          |     _ret_json = jsonify(kwargs)
superset_app          |   File "/usr/local/lib/python3.8/site-packages/flask/json/__init__.py", line 361, in jsonify
superset_app          |     f"{dumps(data, indent=indent, separators=separators)}\n",
superset_app          |   File "/usr/local/lib/python3.8/site-packages/flask/json/__init__.py", line 139, in dumps
superset_app          |     rv = _json.dumps(obj, **kwargs)
superset_app          |   File "/usr/local/lib/python3.8/json/__init__.py", line 234, in dumps
superset_app          |     return cls(
superset_app          |   File "/usr/local/lib/python3.8/json/encoder.py", line 199, in encode
superset_app          |     chunks = self.iterencode(o, _one_shot=True)
superset_app          |   File "/usr/local/lib/python3.8/json/encoder.py", line 257, in iterencode
superset_app          |     return _iterencode(o, 0)
superset_app          |   File "/usr/local/lib/python3.8/site-packages/flask/json/__init__.py", line 57, in default
superset_app          |     return super().default(o)
superset_app          |   File "/usr/local/lib/python3.8/json/encoder.py", line 179, in default
superset_app          |     raise TypeError(f'Object of type {o.__class__.__name__} '
superset_app          | TypeError: Object of type bytes is not JSON serializable

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions