diff --git a/python/pyspark/context.py b/python/pyspark/context.py index 2961cda553d6a1652dc672fcd61855a56ad99c9d..3be07325f416270262c858e2e58d9018c22a7415 100644 --- a/python/pyspark/context.py +++ b/python/pyspark/context.py @@ -240,6 +240,32 @@ class SparkContext(object): if isinstance(threading.current_thread(), threading._MainThread): signal.signal(signal.SIGINT, signal_handler) + def __repr__(self): + return "<SparkContext master={master} appName={appName}>".format( + master=self.master, + appName=self.appName, + ) + + def _repr_html_(self): + return """ + <div> + <p><b>SparkContext</b></p> + + <p><a href="{sc.uiWebUrl}">Spark UI</a></p> + + <dl> + <dt>Version</dt> + <dd><code>v{sc.version}</code></dd> + <dt>Master</dt> + <dd><code>{sc.master}</code></dd> + <dt>AppName</dt> + <dd><code>{sc.appName}</code></dd> + </dl> + </div> + """.format( + sc=self + ) + def _initialize_context(self, jconf): """ Initialize SparkContext in function to allow subclass specific initialization diff --git a/python/pyspark/sql/session.py b/python/pyspark/sql/session.py index 9f4772eec9f2ac3b88f725c51f87d77c8f684829..c1bf2bd76fb7cb6fcaa2714aaf4d154daa71e99b 100644 --- a/python/pyspark/sql/session.py +++ b/python/pyspark/sql/session.py @@ -221,6 +221,17 @@ class SparkSession(object): or SparkSession._instantiatedSession._sc._jsc is None: SparkSession._instantiatedSession = self + def _repr_html_(self): + return """ + <div> + <p><b>SparkSession - {catalogImplementation}</b></p> + {sc_HTML} + </div> + """.format( + catalogImplementation=self.conf.get("spark.sql.catalogImplementation"), + sc_HTML=self.sparkContext._repr_html_() + ) + @since(2.0) def newSession(self): """