Class MultiTableEventStreamWriteFunction
- java.lang.Object
-
- org.apache.flink.api.common.functions.AbstractRichFunction
-
- org.apache.flink.streaming.api.functions.ProcessFunction<I,O>
-
- org.apache.hudi.adapter.ProcessFunctionAdapter<I,org.apache.flink.table.data.RowData>
-
- org.apache.hudi.sink.common.AbstractWriteFunction<I>
-
- org.apache.hudi.sink.common.AbstractStreamWriteFunction<Event>
-
- org.apache.flink.cdc.connectors.hudi.sink.function.MultiTableEventStreamWriteFunction
-
- All Implemented Interfaces:
Serializable,org.apache.flink.api.common.functions.Function,org.apache.flink.api.common.functions.RichFunction,EventProcessorFunction,org.apache.flink.streaming.api.checkpoint.CheckpointedFunction,org.apache.flink.streaming.api.operators.BoundedOneInput
public class MultiTableEventStreamWriteFunction extends org.apache.hudi.sink.common.AbstractStreamWriteFunction<Event> implements EventProcessorFunction
Multi-table wrapper function that routes events to table-specific EventExtendedBucketStreamWriteFunction instances. This approach maintains table isolation by creating dedicated function instances per table while keeping the core write functions single-table focused.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description MultiTableEventStreamWriteFunction(org.apache.flink.configuration.Configuration config)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidendInput()voidinitializeState(org.apache.flink.runtime.state.FunctionInitializationContext context)voidopen(org.apache.flink.api.common.functions.OpenContext openContext)voidprocessDataChange(DataChangeEvent event, org.apache.flink.streaming.api.functions.ProcessFunction.Context ctx, org.apache.flink.util.Collector<org.apache.flink.table.data.RowData> out)Processes change events with context and collector for writing.voidprocessElement(Event event, org.apache.flink.streaming.api.functions.ProcessFunction.Context ctx, org.apache.flink.util.Collector<org.apache.flink.table.data.RowData> out)voidprocessFlush(FlushEvent event)Processes flush events for coordinated flushing across table functions.voidprocessSchemaChange(SchemaChangeEvent event)Processes schema events.voidsetSchemaEvolutionClient(SchemaEvolutionClient schemaEvolutionClient)Sets the SchemaEvolutionClient from the operator level since functions don't have direct access to TaskOperatorEventGateway.voidsnapshotState()voidsnapshotState(org.apache.flink.runtime.state.FunctionSnapshotContext context)-
Methods inherited from class org.apache.hudi.sink.common.AbstractStreamWriteFunction
getCorrespondent, getOperatorEventGateway, handleOperatorEvent, instantToWrite, setCorrespondent, setOperatorEventGateway
-
-
-
-
Method Detail
-
initializeState
public void initializeState(org.apache.flink.runtime.state.FunctionInitializationContext context) throws Exception
-
setSchemaEvolutionClient
public void setSchemaEvolutionClient(SchemaEvolutionClient schemaEvolutionClient)
Sets the SchemaEvolutionClient from the operator level since functions don't have direct access to TaskOperatorEventGateway.
-
open
public void open(org.apache.flink.api.common.functions.OpenContext openContext) throws Exception- Specified by:
openin interfaceorg.apache.flink.api.common.functions.RichFunction- Throws:
Exception
-
processElement
public void processElement(Event event, org.apache.flink.streaming.api.functions.ProcessFunction.Context ctx, org.apache.flink.util.Collector<org.apache.flink.table.data.RowData> out) throws Exception
-
processSchemaChange
public void processSchemaChange(SchemaChangeEvent event) throws Exception
Processes schema events. For aCreateTableEvent, it ensures that the coordinator is notified and the physical Hudi table is created. For aSchemaChangeEvent, it updates the local schema cache.Implements
EventProcessorFunction.processSchemaChange(SchemaChangeEvent).- Specified by:
processSchemaChangein interfaceEventProcessorFunction- Parameters:
event- The schema change event- Throws:
Exception- if processing fails
-
processDataChange
public void processDataChange(DataChangeEvent event, org.apache.flink.streaming.api.functions.ProcessFunction.Context ctx, org.apache.flink.util.Collector<org.apache.flink.table.data.RowData> out)
Processes change events with context and collector for writing. This triggers the actual Hudi write operations as side effects by delegating to table-specific functions.- Specified by:
processDataChangein interfaceEventProcessorFunction- Parameters:
event- The data change event containing the operation type and datactx- The process function context for accessing runtime informationout- The collector for emitting processed RowData records
-
processFlush
public void processFlush(FlushEvent event) throws Exception
Processes flush events for coordinated flushing across table functions. This handles both table-specific and global flush operations.Implements
EventProcessorFunction.processFlush(FlushEvent).- Specified by:
processFlushin interfaceEventProcessorFunction- Parameters:
event- The flush event- Throws:
Exception- if processing fails
-
snapshotState
public void snapshotState()
- Specified by:
snapshotStatein classorg.apache.hudi.sink.common.AbstractStreamWriteFunction<Event>
-
snapshotState
public void snapshotState(org.apache.flink.runtime.state.FunctionSnapshotContext context) throws Exception
-
close
public void close() throws Exception- Specified by:
closein interfaceorg.apache.flink.api.common.functions.RichFunction- Overrides:
closein classorg.apache.flink.api.common.functions.AbstractRichFunction- Throws:
Exception
-
endInput
public void endInput()
- Specified by:
endInputin interfaceorg.apache.flink.streaming.api.operators.BoundedOneInput- Overrides:
endInputin classorg.apache.hudi.sink.common.AbstractStreamWriteFunction<Event>
-
-