apache/beam · error · NotImplementedError
interactive support will come later!
Error message
interactive support will come later!
What it means
DaskRunner.run_pipeline detects an interactive notebook environment; running a pipeline from a notebook cells via DaskRunner is not implemented (tracked as a TODO), so the runner refuses rather than behaving incorrectly.
Solutions
- Run the pipeline from a regular Python script/REPL instead of a notebook.
- Clear/override notebook detection context if your environment is falsely detected as a notebook.
- Use a different runner (DirectRunner) inside notebooks and DaskRunner only in scripts.
Example fix
// before (in notebook) p = beam.Pipeline(runner='DaskRunner') // after (move to script.py) # script.py executed with python script.py p = beam.Pipeline(runner='DaskRunner')
Defensive patterns
Strategy: validation
Validate before calling
from apache_beam.runners.dask.dask_runner import is_in_notebook
if is_in_notebook():
raise RuntimeError('DaskRunner cannot run in notebooks; use a script.') Try / catch
try:
with beam.Pipeline(runner='DaskRunner', options=opts) as p:
...
except NotImplementedError as e:
logging.error('Notebook unsupported for DaskRunner: %s', e) Prevention
- Run Dask pipelines from scripts, not Jupyter.
- Use DirectRunner for interactive notebook exploration.
- Be aware of environments that auto-detect as notebooks (VS Code interactive, IPython).
When it happens
Trigger: Calling `beam.Pipeline(runner='DaskRunner')` (or DaskRunner().run_pipeline) from inside a Jupyter/IPython notebook session where `is_in_notebook()` returns True.
Common situations: Developers prototyping Beam pipelines in Jupyter with --runner=DaskRunner; they hit this immediately since notebook detection is automatic.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- collecting metrics will come later!
- Assigning an index is not yet supported. Consider using…
- by
- concat(ignore_index)
- concat(levels)
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/006a687132e5829d.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/python/apache_beam/runners/dask/dask_runner.py:230
si._view_options(),
DaskBagWindowedIterator(si_asbag, si._window_mapping_fn)))
op_kws["side_inputs"] = bag_side_inputs
self.bags[transform_node] = op.apply(**op_kws)
return DaskBagVisitor()
@staticmethod
def is_fnapi_compatible():
return False
def run_pipeline(self, pipeline, options):
import dask
# TODO(alxmrs): Create interactive notebook support.
if is_in_notebook():
raise NotImplementedError('interactive support will come later!')
try:
import dask.distributed as ddist
except ImportError:
raise ImportError(
'DaskRunner is not available. Please install apache_beam[dask].')
dask_options = options.view_as(DaskOptions).get_all_options(
drop_default=True, current_only=True)
bag_kwargs = DaskOptions._extract_bag_kwargs(dask_options)
client = ddist.Client(**dask_options)
pipeline.replace_all(dask_overrides())
dask_visitor = self.to_dask_bag_visitor(bag_kwargs)
pipeline.visit(dask_visitor)
# The dictionary in this visitor keeps a mapping of every Beam
# PTransform to the equivalent Bag operation. This is highlyView on GitHub (pinned to 12126d8942)