- Notifications
You must be signed in to change notification settings - Fork126
Closed
Description
It seems therequested async support has been added in#463 however I get errors in the newget_async_execution_result() method which seems necessary.
Sync (works)
fromdatabricksimportsqlimportpandasaspdwithsql.connect(server_hostname=dbx._url,http_path=dbx._http_path,credentials_provider=dbx.credential_provider)asconnection:withconnection.cursor()ascursor:cursor.execute('SELECT 1+10')result=cursor.fetchall()df=pd.DataFrame([row.asDict()forrowinresult])display(df)
Async (error)
fromdatabricksimportsqlimportpandasaspdwithsql.connect(server_hostname=dbx._url,http_path=dbx._http_path,credentials_provider=dbx.credential_provider)asconnection:withconnection.cursor()ascursor:cursor.execute_async('SELECT 1+10')cursor.get_async_execution_result()# Error happens hereresult=cursor.fetchall()df=pd.DataFrame([row.asDict()forrowinresult])display(df)
Async Error:
---------------------------------------------------------------------------RequestError Traceback (most recent call last)Cell In[42], [line 18](vscode-notebook-cell:?execution_count=42&line=18)---> [18](vscode-notebook-cell:?execution_count=42&line=18)cursor.get_async_execution_result() [19](vscode-notebook-cell:?execution_count=42&line=19) result =cursor.fetchall() [21](vscode-notebook-cell:?execution_count=42&line=21) df =pd.DataFrame([row.asDict()forrowin result])File c:\Users\user/repo\.venv\Lib\site-packages\databricks\sql\client.py:893,in Cursor.get_async_execution_result(self) [887](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:887) def is_executing(operation_state) ->"bool": [888](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:888)return not operation_state or operation_statein [ [889](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:889) ttypes.TOperationState.RUNNING_STATE, [890](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:890) ttypes.TOperationState.PENDING_STATE, [891](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:891) ]--> [893](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:893)whileis_executing(self.get_query_state()): [894](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:894)# Poll after some default time [895](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:895) time.sleep(self.ASYNC_DEFAULT_POLLING_INTERVAL) [897](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:897) operation_state =self.get_query_state()File c:\Users\user\repo\.venv\Lib\site-packages\databricks\sql\client.py:876,in Cursor.get_query_state(self) [870](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:870)""" [871](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:871) Get the state of the async executing query or basically poll the status of the query [872](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:872) [873](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:873) :return: [874](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:874)""" [875](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:875)self._check_not_closed()--> [876](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/client.py:876)return self.thrift_backend.get_query_state(self.active_op_handle)File c:\Users\user\repo\.venv\Lib\site-packages\databricks\sql\thrift_backend.py:850,in ThriftBackend.get_query_state(self, op_handle) [849](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:849) def get_query_state(self, op_handle) ->"TOperationState":--> [850](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:850) poll_resp = self._poll_for_status(op_handle) [851](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:851) operation_state = poll_resp.operationState [852](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:852) self._check_command_not_in_error_or_closed_state(op_handle, poll_resp)File c:\Users\user\repo\.venv\Lib\site-packages\databricks\sql\thrift_backend.py:607,in ThriftBackend._poll_for_status(self, op_handle) [602](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:602) def _poll_for_status(self, op_handle): [603](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:603) req = ttypes.TGetOperationStatusReq( [604](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:604) operationHandle=op_handle, [605](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:605) getProgressUpdate=False, [606](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:606) )--> [607](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:607)return self.make_request(self._client.GetOperationStatus, req)File c:\Users\user\repo\.venv\Lib\site-packages\databricks\sql\thrift_backend.py:483,in ThriftBackend.make_request(self, method, request, retryable) [481](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:481) error_info = response_or_error_info [482](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:482)# The error handler will either sleep or throw an exception--> [483](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:483) self._handle_request_error(error_info, attempt, elapsed)File c:\Users\user\repo\.venv\Lib\site-packages\databricks\sql\thrift_backend.py:313,in ThriftBackend._handle_request_error(self, error_info, attempt, elapsed) [308](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:308) network_request_error = RequestError( [309](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:309) user_friendly_error_message, full_error_info_context, error_info.error [310](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:310) ) [311](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:311)logger.info(network_request_error.message_with_context())--> [313](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:313) raise network_request_error [315](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:315) logger.info( [316](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:316)"Retrying request after error in {} seconds: {}".format( [317](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:317) error_info.retry_delay, full_error_info_context [318](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:318) ) [319](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:319) ) [320](file:///C:/Users/user/repo/.venv/Lib/site-packages/databricks/sql/thrift_backend.py:320) time.sleep(error_info.retry_delay)RequestError: Error during request to server: RESOURCE_DOES_NOT_EXIST: Command 01efc932-3f38-12c2-824f-44c0ed853014 does not exist.. RESOURCE_DOES_NOT_EXIST: Command 01efc932-3f38-12c2-824f-44c0ed853014 does not exist.
Metadata
Metadata
Assignees
Labels
No labels