diff options
author | Davies Liu <davies@databricks.com> | 2015-10-19 16:18:20 -0700 |
---|---|---|
committer | Andrew Or <andrew@databricks.com> | 2015-10-19 16:18:20 -0700 |
commit | 232d7f8d42950431f1d9be2a6bb3591fb6ea20d6 (patch) | |
tree | 38abfac2a3d362fb4f8e62cc91d57791c6370ad3 /python/pyspark/context.py | |
parent | a1413b3662250dd5e980e8b1f7c3dc4585ab4766 (diff) | |
download | spark-232d7f8d42950431f1d9be2a6bb3591fb6ea20d6.tar.gz spark-232d7f8d42950431f1d9be2a6bb3591fb6ea20d6.tar.bz2 spark-232d7f8d42950431f1d9be2a6bb3591fb6ea20d6.zip |
[SPARK-11114][PYSPARK] add getOrCreate for SparkContext/SQLContext in Python
Also added SQLContext.newSession()
Author: Davies Liu <davies@databricks.com>
Closes #9122 from davies/py_create.
Diffstat (limited to 'python/pyspark/context.py')
-rw-r--r-- | python/pyspark/context.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/python/pyspark/context.py b/python/pyspark/context.py index 4969d85f52..afd74d937a 100644 --- a/python/pyspark/context.py +++ b/python/pyspark/context.py @@ -21,7 +21,7 @@ import os import shutil import signal import sys -from threading import Lock +from threading import RLock from tempfile import NamedTemporaryFile from pyspark import accumulators @@ -65,7 +65,7 @@ class SparkContext(object): _jvm = None _next_accum_id = 0 _active_spark_context = None - _lock = Lock() + _lock = RLock() _python_includes = None # zip and egg files that need to be added to PYTHONPATH PACKAGE_EXTENSIONS = ('.zip', '.egg', '.jar') @@ -280,6 +280,18 @@ class SparkContext(object): """ self.stop() + @classmethod + def getOrCreate(cls, conf=None): + """ + Get or instantiate a SparkContext and register it as a singleton object. + + :param conf: SparkConf (optional) + """ + with SparkContext._lock: + if SparkContext._active_spark_context is None: + SparkContext(conf=conf or SparkConf()) + return SparkContext._active_spark_context + def setLogLevel(self, logLevel): """ Control our logLevel. This overrides any user-defined log settings. |