Interface DynamicTableSink


  • @PublicEvolving
    public interface DynamicTableSink
    Sink of a dynamic table to an external storage system.

    Dynamic tables are the core concept of Flink's Table & SQL API for processing both bounded and unbounded data in a unified fashion. By definition, a dynamic table can change over time.

    When writing a dynamic table, the content can always be considered as a changelog (finite or infinite) for which all changes are written out continuously until the changelog is exhausted. The given ChangelogMode indicates the set of changes that the sink accepts during runtime.

    For regular batch scenarios, the sink can solely accept insert-only rows and write out bounded streams.

    For regular streaming scenarios, the sink can solely accept insert-only rows and can write out unbounded streams.

    For change data capture (CDC) scenarios, the sink can write out bounded or unbounded streams with insert, update, and delete rows. See also RowKind.

    Instances of DynamicTableSink can be seen as factories that eventually produce concrete runtime implementation for writing the actual data.

    Depending on the optionally declared abilities, the planner might apply changes to an instance and thus mutate the produced runtime implementation.

    A DynamicTableSink can implement the following abilities:

    In the last step, the planner will call getSinkRuntimeProvider(Context) for obtaining a provider of runtime implementation.

    • Method Detail

      • getChangelogMode

        ChangelogMode getChangelogMode​(ChangelogMode requestedMode)
        Returns the set of changes that the sink accepts during runtime.

        The planner can make suggestions but the sink has the final decision what it requires. If the planner does not support this mode, it will throw an error. For example, the sink can return that it only supports ChangelogMode.insertOnly().

        Parameters:
        requestedMode - expected set of changes by the current plan
      • copy

        DynamicTableSink copy()
        Creates a copy of this instance during planning. The copy should be a deep copy of all mutable members.
      • asSummaryString

        String asSummaryString()
        Returns a string that summarizes this sink for printing to a console or log.