apache/beam · warning
Native sinks no longer implemented; ignoring…
Error message
Native sinks no longer implemented; ignoring use_legacy_bq_sink.
What it means
The Dataflow runner warns when the `use_legacy_bq_sink` experiment is set, because native BigQuery sinks are no longer implemented and the flag is ignored; the standard Beam sink path is used regardless.
Solutions
- Remove `use_legacy_bq_sink` from the experiments list.
- Use `WriteToBigQuery` with an explicit method (e.g. FILE_LOADS) if that load behavior is desired.
- Audit Dataflow job configs and launch scripts to strip the flag.
Example fix
// before options = PipelineOptions(['--experiments=use_legacy_bq_sink']) // after options = PipelineOptions([]) # or other experiments only
Defensive patterns
Strategy: validation
Validate before calling
from apache_beam.options.pipeline_options import DebugOptions
if options.view_as(DebugOptions).lookup_experiment('use_legacy_bq_sink'):
raise ValueError('use_legacy_bq_sink is ignored; remove the experiment') Prevention
- Audit Dataflow --experiments lists for removed/ignored flags.
- Use WriteToBigQuery with an explicit method instead of sink experiments.
- Keep launch scripts in version control and lint them for deprecated experiments.
When it happens
Trigger: Launching a pipeline to Dataflow with `--experiments=use_legacy_bq_sink` (via PipelineOptions or Dataflow console), reaching run_pipeline in dataflow_runner.py.
Common situations: Older deployment scripts/templates that enabled the legacy sink experiment; migration off Dataflow's former native sink support.
Understand the failure class
Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.
Related errors
- Native sinks no longer implemented; falling back to…
- Native sources no longer implemented; falling back to…
- A BigQuery table or a query must be specified
- Bigquery dependencies are not installed.
- Bigquery dependencies are not installed.
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/dfb67e422d36224b.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/python/apache_beam/runners/dataflow/dataflow_runner.py:401
pipeline.visit(
self.side_input_visitor(
deterministic_key_coders=not options.view_as(
TypeOptions).allow_non_deterministic_key_coders))
# Performing configured PTransform overrides. Note that this is currently
# done before Runner API serialization, since the new proto needs to
# contain any added PTransforms.
pipeline.replace_all(DataflowRunner._PTRANSFORM_OVERRIDES)
# Apply DataflowRunner-specific overrides (e.g., streaming PubSub
# optimizations)
from apache_beam.runners.dataflow.ptransform_overrides import get_dataflow_transform_overrides
dataflow_overrides = get_dataflow_transform_overrides(options)
if dataflow_overrides:
pipeline.replace_all(dataflow_overrides)
if options.view_as(DebugOptions).lookup_experiment('use_legacy_bq_sink'):
warnings.warn(
"Native sinks no longer implemented; "
"ignoring use_legacy_bq_sink.")
if pipeline_proto:
self.proto_pipeline = pipeline_proto
else:
if options.view_as(SetupOptions).prebuild_sdk_container_engine:
# if prebuild_sdk_container_engine is specified we will build a new sdk
# container image with dependencies pre-installed and use that image,
# instead of using the inferred default container image.
self._default_environment = (
environments.DockerEnvironment.from_options(options))
options.view_as(WorkerOptions).sdk_container_image = (
self._default_environment.container_image)
else:
artifacts = environments.python_sdk_dependencies(options)
if artifacts:View on GitHub (pinned to 12126d8942)