Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Apache Flink HybridSource CreateEnumerator

From Leeroopedia
Revision as of 14:17, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Apache_Flink_HybridSource_CreateEnumerator.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Knowledge Sources
Domains Stream_Processing, Source_Architecture
Last Updated 2026-02-09 00:00 GMT

Overview

Concrete tool for creating hybrid source enumerators and readers that wrap source-specific implementations provided by the Apache Flink connector-base module.

Description

HybridSource.createEnumerator creates a HybridSourceSplitEnumerator wrapping the source chain. HybridSource.createReader creates a HybridSourceReader that delegates to source-specific readers. The enumerator uses a SplitEnumeratorContextProxy to translate between HybridSourceSplit and source-specific splits.

Usage

These are internal factory methods called by the Flink runtime when deploying the source.

Code Reference

Source Location

  • Repository: Apache Flink
  • File: flink-connectors/flink-connector-base/src/main/java/org/apache/flink/connector/base/source/hybrid/HybridSource.java
  • Lines: L116-136

Signature

@Internal
@Override
public SourceReader<T, HybridSourceSplit> createReader(SourceReaderContext readerContext)
        throws Exception {
    return new HybridSourceReader<>(readerContext);
}

@Internal
@Override
public SplitEnumerator<HybridSourceSplit, HybridSourceEnumeratorState> createEnumerator(
        SplitEnumeratorContext<HybridSourceSplit> enumContext) {
    return new HybridSourceSplitEnumerator(enumContext, sources, 0, null);
}

@Internal
@Override
public SplitEnumerator<HybridSourceSplit, HybridSourceEnumeratorState> restoreEnumerator(
        SplitEnumeratorContext<HybridSourceSplit> enumContext,
        HybridSourceEnumeratorState checkpoint) throws Exception {
    return new HybridSourceSplitEnumerator(
            enumContext, sources, checkpoint.getCurrentSourceIndex(), checkpoint);
}

Import

import org.apache.flink.connector.base.source.hybrid.HybridSource;
// Internal methods

I/O Contract

Inputs

Name Type Required Description
enumContext SplitEnumeratorContext<HybridSourceSplit> Yes Runtime enumerator context
readerContext SourceReaderContext Yes Runtime reader context

Outputs

Name Type Description
enumerator HybridSourceSplitEnumerator Wrapping enumerator for the source chain
reader HybridSourceReader<T> Wrapping reader for the current source

Usage Examples

Initialization Flow

// Flink runtime calls:
// 1. hybridSource.createEnumerator(context)
//    -> HybridSourceSplitEnumerator(context, sources, startIndex=0, restoredState=null)
//
// 2. hybridSource.createReader(context)
//    -> HybridSourceReader(readerContext) with currentSourceIndex=-1
//
// 3. enumerator.start()
//    -> switchEnumerator() creates source[0]'s enumerator
//    -> sends SwitchSourceEvent to all readers

Related Pages

Implements Principle

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment