@PublicEvolving public class HybridSource<T> extends Object implements org.apache.flink.api.connector.source.Source<T,HybridSourceSplit,HybridSourceEnumeratorState>
A simple example with FileSource and KafkaSource with fixed Kafka start position:
FileSource<String> fileSource =
FileSource.forRecordStreamFormat(new TextLineInputFormat(), Path.fromLocalFile(testDir)).build();
KafkaSource<String> kafkaSource =
KafkaSource.<String>builder()
.setBootstrapServers("localhost:9092")
.setGroupId("MyGroup")
.setTopics(Arrays.asList("quickstart-events"))
.setDeserializer(
KafkaRecordDeserializer.valueOnly(StringDeserializer.class))
.setStartingOffsets(OffsetsInitializer.earliest())
.build();
HybridSource<String> hybridSource =
HybridSource.builder(fileSource)
.addSource(kafkaSource)
.build();
A more complex example with Kafka start position derived from previous source:
HybridSource<String> hybridSource =
HybridSource.<String, StaticFileSplitEnumerator>builder(fileSource)
.addSource(
switchContext -> {
StaticFileSplitEnumerator previousEnumerator =
switchContext.getPreviousEnumerator();
// how to get timestamp depends on specific enumerator
long timestamp = previousEnumerator.getEndTimestamp();
OffsetsInitializer offsets =
OffsetsInitializer.timestamp(timestamp);
KafkaSource<String> kafkaSource =
KafkaSource.<String>builder()
.setBootstrapServers("localhost:9092")
.setGroupId("MyGroup")
.setTopics(Arrays.asList("quickstart-events"))
.setDeserializer(
KafkaRecordDeserializer.valueOnly(StringDeserializer.class))
.setStartingOffsets(offsets)
.build();
return kafkaSource;
},
Boundedness.CONTINUOUS_UNBOUNDED)
.build();
| 限定符和类型 | 类和说明 |
|---|---|
static class |
HybridSource.HybridSourceBuilder<T,EnumT extends org.apache.flink.api.connector.source.SplitEnumerator>
Builder for HybridSource.
|
static interface |
HybridSource.SourceFactory<T,SourceT extends org.apache.flink.api.connector.source.Source<T,?,?>,FromEnumT extends org.apache.flink.api.connector.source.SplitEnumerator>
Factory for underlying sources of
HybridSource. |
static interface |
HybridSource.SourceSwitchContext<EnumT>
Context provided to source factory.
|
| 限定符 | 构造器和说明 |
|---|---|
protected |
HybridSource(List<org.apache.flink.connector.base.source.hybrid.HybridSource.SourceListEntry> sources)
Protected for subclass, use
builder(Source) to construct source. |
| 限定符和类型 | 方法和说明 |
|---|---|
static <T,EnumT extends org.apache.flink.api.connector.source.SplitEnumerator> |
builder(org.apache.flink.api.connector.source.Source<T,?,?> firstSource)
Builder for
HybridSource. |
org.apache.flink.api.connector.source.SplitEnumerator<HybridSourceSplit,HybridSourceEnumeratorState> |
createEnumerator(org.apache.flink.api.connector.source.SplitEnumeratorContext<HybridSourceSplit> enumContext) |
org.apache.flink.api.connector.source.SourceReader<T,HybridSourceSplit> |
createReader(org.apache.flink.api.connector.source.SourceReaderContext readerContext) |
org.apache.flink.api.connector.source.Boundedness |
getBoundedness() |
org.apache.flink.core.io.SimpleVersionedSerializer<HybridSourceEnumeratorState> |
getEnumeratorCheckpointSerializer() |
org.apache.flink.core.io.SimpleVersionedSerializer<HybridSourceSplit> |
getSplitSerializer() |
org.apache.flink.api.connector.source.SplitEnumerator<HybridSourceSplit,HybridSourceEnumeratorState> |
restoreEnumerator(org.apache.flink.api.connector.source.SplitEnumeratorContext<HybridSourceSplit> enumContext,
HybridSourceEnumeratorState checkpoint) |
protected HybridSource(List<org.apache.flink.connector.base.source.hybrid.HybridSource.SourceListEntry> sources)
builder(Source) to construct source.public static <T,EnumT extends org.apache.flink.api.connector.source.SplitEnumerator> HybridSource.HybridSourceBuilder<T,EnumT> builder(org.apache.flink.api.connector.source.Source<T,?,?> firstSource)
HybridSource.public org.apache.flink.api.connector.source.Boundedness getBoundedness()
getBoundedness 在接口中 org.apache.flink.api.connector.source.Source<T,HybridSourceSplit,HybridSourceEnumeratorState>@Internal public org.apache.flink.api.connector.source.SourceReader<T,HybridSourceSplit> createReader(org.apache.flink.api.connector.source.SourceReaderContext readerContext) throws Exception
createReader 在接口中 org.apache.flink.api.connector.source.SourceReaderFactory<T,HybridSourceSplit>Exception@Internal public org.apache.flink.api.connector.source.SplitEnumerator<HybridSourceSplit,HybridSourceEnumeratorState> createEnumerator(org.apache.flink.api.connector.source.SplitEnumeratorContext<HybridSourceSplit> enumContext)
createEnumerator 在接口中 org.apache.flink.api.connector.source.Source<T,HybridSourceSplit,HybridSourceEnumeratorState>@Internal public org.apache.flink.api.connector.source.SplitEnumerator<HybridSourceSplit,HybridSourceEnumeratorState> restoreEnumerator(org.apache.flink.api.connector.source.SplitEnumeratorContext<HybridSourceSplit> enumContext, HybridSourceEnumeratorState checkpoint) throws Exception
restoreEnumerator 在接口中 org.apache.flink.api.connector.source.Source<T,HybridSourceSplit,HybridSourceEnumeratorState>Exception@Internal public org.apache.flink.core.io.SimpleVersionedSerializer<HybridSourceSplit> getSplitSerializer()
getSplitSerializer 在接口中 org.apache.flink.api.connector.source.Source<T,HybridSourceSplit,HybridSourceEnumeratorState>@Internal public org.apache.flink.core.io.SimpleVersionedSerializer<HybridSourceEnumeratorState> getEnumeratorCheckpointSerializer()
getEnumeratorCheckpointSerializer 在接口中 org.apache.flink.api.connector.source.Source<T,HybridSourceSplit,HybridSourceEnumeratorState>Copyright © 2014–2023 The Apache Software Foundation. All rights reserved.