diff --git a/python/pyspark/sql/dataframe.py b/python/pyspark/sql/dataframe.py index 9f86086dad83d..43dd30b8ca8ee 100644 --- a/python/pyspark/sql/dataframe.py +++ b/python/pyspark/sql/dataframe.py @@ -305,11 +305,12 @@ def explain(self, extended=None, mode=None): is_mode_case = mode is not None and isinstance(mode, basestring) if not is_no_argument and not (is_extended_case or is_mode_case): - argtypes = [ - str(type(arg)) for arg in [extended, mode] if arg is not None] - raise TypeError( - "extended (optional) and mode (optional) should be a bool and str; " - "however, got [%s]." % ", ".join(argtypes)) + if extended is not None: + errMsg = "extended (optional) should be provided as bool" \ + ", got {0}".format(type(extended)) + else: # For mode case + errMsg = "mode (optional) should be provided as str, got {0}".format(type(mode)) + raise TypeError(errMsg) # Sets an explain mode depending on a given argument if is_no_argument: diff --git a/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala b/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala index 42338bd8accac..3fb82420a515c 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala @@ -547,6 +547,7 @@ class Dataset[T] private[sql]( } } + // This method intends to be called from PySpark DataFrame private[sql] def toExplainString(mode: String): String = { mode.toLowerCase(Locale.ROOT) match { case "simple" => toExplainString(ExplainMode.Simple)