class_docstr: BasicProfiler is the default profiler, which is implemented based on
  cProfile and Accumulator
class_docstr_tok: ["BasicProfiler","is","the","default","profiler",",","which","is","implemented","based","on","cProfile","and","Accumulator"]
docstr: Dump the profile into path, id is the RDD id
docstr_tok: ["Dump","the","profile","into","path",",","id","is","the","RDD","id"]
code: def dump(self, id: int, path: str) -> None:
      """Dump the profile into path, id is the RDD id"""
      if not os.path.exists(path):
          os.makedirs(path)
      stats = self.stats()
      if stats:
          p = os.path.join(path, "rdd_%d.pstats" % id)
          stats.dump_stats(p)
  
imports: from typing import Any, Callable, Dict, List, Optional, Tuple, Type, TYPE_CHECKING, Union, cast
  import cProfile
  import inspect
  import pstats
  import linecache
  import os
  import atexit
  import sys
  import warnings
  from pyspark.accumulators import AccumulatorParam
  from pyspark.errors import PySparkRuntimeError
label_desc: Use image node_id 5 for calling the BasicProfiler obj's underlying member method code with example usage: obj.dump(id, path) without return types