Skip to content

Commit c9439be

Browse files
committed
replaced dict with namedtuple
1 parent a6bf4cd commit c9439be

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

python/pyspark/context.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import sys
2121
from threading import Lock
2222
from tempfile import NamedTemporaryFile
23+
from collections import namedtuple
2324

2425
from pyspark import accumulators
2526
from pyspark.accumulators import Accumulator
@@ -87,7 +88,8 @@ def __init__(self, master=None, appName=None, sparkHome=None, pyFiles=None,
8788
if rdd._extract_concise_traceback() is not None:
8889
self._callsite = rdd._extract_concise_traceback()
8990
else:
90-
self._callsite = {"function": None, "file": None, "line": None}
91+
tempNamedTuple = namedtuple("Callsite", "function file linenum")
92+
self._callsite = tempNamedTuple(function=None, file=None, linenum=None)
9193
SparkContext._ensure_initialized(self, gateway=gateway)
9294

9395
self.environment = environment or {}
@@ -181,7 +183,7 @@ def _ensure_initialized(cls, instance=None, gateway=None):
181183
# Raise error if there is already a running Spark context
182184
raise ValueError("Cannot run multiple SparkContexts at once; existing SparkContext(app=%s, master=%s)" \
183185
" created by %s at %s:%s " \
184-
% (currentAppName, currentMaster, callsite['function'], callsite['file'], callsite['line']))
186+
% (currentAppName, currentMaster, callsite.function, callsite.file, callsite.linenum))
185187
else:
186188
SparkContext._active_spark_context = instance
187189

python/pyspark/rdd.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from base64 import standard_b64encode as b64enc
1919
import copy
2020
from collections import defaultdict
21+
from collections import namedtuple
2122
from itertools import chain, ifilter, imap
2223
import operator
2324
import os
@@ -47,6 +48,7 @@ def _extract_concise_traceback():
4748
with function name, file name and line number
4849
"""
4950
tb = traceback.extract_stack()
51+
callsite = namedtuple("Callsite", "function file linenum")
5052
if len(tb) == 0:
5153
return None
5254
file, line, module, what = tb[len(tb) - 1]
@@ -59,18 +61,18 @@ def _extract_concise_traceback():
5961
break
6062
if first_spark_frame == 0:
6163
file, line, fun, what = tb[0]
62-
return {"function": fun, "file": file, "line": line}
64+
return callsite(function=fun, file=file, linenum=line)
6365
sfile, sline, sfun, swhat = tb[first_spark_frame]
6466
ufile, uline, ufun, uwhat = tb[first_spark_frame-1]
65-
return {"function": sfun, "file": ufile, "line": uline}
67+
return callsite(function=sfun, file=ufile, linenum=uline)
6668

6769
_spark_stack_depth = 0
6870

6971
class _JavaStackTrace(object):
7072
def __init__(self, sc):
7173
tb = _extract_concise_traceback()
7274
if tb is not None:
73-
self._traceback = "%s at %s:%s" % (tb["function"], tb["file"], tb["line"])
75+
self._traceback = "%s at %s:%s" % (tb.function, tb.file, tb.linenum)
7476
else:
7577
self._traceback = "Error! Could not extract traceback info"
7678
self._context = sc

0 commit comments

Comments
 (0)