From 44350bf7345c0a7ece7ba62554141d52f9019226 Mon Sep 17 00:00:00 2001 From: Haejoon Lee Date: Thu, 13 Feb 2025 15:11:59 +0900 Subject: [PATCH] [SPARK-51176][PYTHON][CONNECT] Meet consistency for unexpected errors PySpark Connect <> Classic --- python/pyspark/errors/exceptions/connect.py | 35 +++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/python/pyspark/errors/exceptions/connect.py b/python/pyspark/errors/exceptions/connect.py index 66a3f0511d7c1..879e7e675cc66 100644 --- a/python/pyspark/errors/exceptions/connect.py +++ b/python/pyspark/errors/exceptions/connect.py @@ -36,6 +36,7 @@ SparkUpgradeException as BaseSparkUpgradeException, QueryContext as BaseQueryContext, QueryContextType, + UnknownException as BaseUnknownException, ) if TYPE_CHECKING: @@ -104,8 +105,8 @@ def convert_exception( contexts=contexts, ) - # Return SparkConnectGrpcException if there is no matched exception class - return SparkConnectGrpcException( + # Return UnknownException if there is no matched exception class + return UnknownException( message, reason=info.reason, messageParameters=message_parameters, @@ -207,6 +208,36 @@ def __str__(self) -> str: return self.getMessage() +class UnknownException(SparkConnectGrpcException, BaseUnknownException): + """ + Exception for unmapped errors in Spark Connect. + This class is functionally identical to SparkConnectGrpcException but has a different name + for consistency. + """ + + def __init__( + self, + message: Optional[str] = None, + errorClass: Optional[str] = None, + messageParameters: Optional[Dict[str, str]] = None, + reason: Optional[str] = None, + sql_state: Optional[str] = None, + server_stacktrace: Optional[str] = None, + display_server_stacktrace: bool = False, + contexts: Optional[List[BaseQueryContext]] = None, + ) -> None: + super().__init__( + message=message, + errorClass=errorClass, + messageParameters=messageParameters, + reason=reason, + sql_state=sql_state, + server_stacktrace=server_stacktrace, + display_server_stacktrace=display_server_stacktrace, + contexts=contexts, + ) + + class AnalysisException(SparkConnectGrpcException, BaseAnalysisException): """ Failed to analyze a SQL query plan, thrown from Spark Connect.