|
20 | 20 | import org.apache.seatunnel.api.common.JobContext;
|
21 | 21 | import org.apache.seatunnel.api.configuration.ReadonlyConfig;
|
22 | 22 | import org.apache.seatunnel.api.sink.DefaultSinkWriterContext;
|
| 23 | +import org.apache.seatunnel.api.sink.MultiTableResourceManager; |
23 | 24 | import org.apache.seatunnel.api.sink.SeaTunnelSink;
|
24 | 25 | import org.apache.seatunnel.api.sink.SinkAggregatedCommitter;
|
25 | 26 | import org.apache.seatunnel.api.sink.SinkCommitter;
|
26 | 27 | import org.apache.seatunnel.api.sink.SinkWriter;
|
| 28 | +import org.apache.seatunnel.api.sink.SupportMultiTableSinkAggregatedCommitter; |
27 | 29 | import org.apache.seatunnel.api.table.catalog.CatalogTable;
|
28 | 30 | import org.apache.seatunnel.api.table.factory.TableSinkFactory;
|
29 | 31 | import org.apache.seatunnel.api.table.factory.TableSinkFactoryContext;
|
@@ -108,16 +110,30 @@ private static void runWithContext(
|
108 | 110 | }
|
109 | 111 |
|
110 | 112 | Optional<? extends SinkCommitter<?>> sinkCommitter = sink.createCommitter();
|
111 |
| - Optional<? extends SinkAggregatedCommitter<?, ?>> aggregatedCommitter = |
| 113 | + Optional<? extends SinkAggregatedCommitter<?, ?>> aggregatedCommitterOptional = |
112 | 114 | sink.createAggregatedCommitter();
|
113 | 115 |
|
114 | 116 | if (!commitInfos.isEmpty()) {
|
115 |
| - if (aggregatedCommitter.isPresent()) { |
| 117 | + if (aggregatedCommitterOptional.isPresent()) { |
| 118 | + SinkAggregatedCommitter<?, ?> aggregatedCommitter = |
| 119 | + aggregatedCommitterOptional.get(); |
| 120 | + MultiTableResourceManager resourceManager = null; |
| 121 | + if (aggregatedCommitter instanceof SupportMultiTableSinkAggregatedCommitter) { |
| 122 | + resourceManager = |
| 123 | + ((SupportMultiTableSinkAggregatedCommitter<?>) aggregatedCommitter) |
| 124 | + .initMultiTableResourceManager(1, 1); |
| 125 | + } |
| 126 | + aggregatedCommitter.init(); |
| 127 | + if (resourceManager != null) { |
| 128 | + ((SupportMultiTableSinkAggregatedCommitter<?>) aggregatedCommitter) |
| 129 | + .setMultiTableResourceManager(resourceManager, 0); |
| 130 | + } |
| 131 | + |
116 | 132 | Object aggregatedCommitInfoT =
|
117 |
| - ((SinkAggregatedCommitter) aggregatedCommitter.get()).combine(commitInfos); |
118 |
| - ((SinkAggregatedCommitter) aggregatedCommitter.get()) |
| 133 | + ((SinkAggregatedCommitter) aggregatedCommitter).combine(commitInfos); |
| 134 | + ((SinkAggregatedCommitter) aggregatedCommitter) |
119 | 135 | .commit(Collections.singletonList(aggregatedCommitInfoT));
|
120 |
| - aggregatedCommitter.get().close(); |
| 136 | + aggregatedCommitter.close(); |
121 | 137 | } else if (sinkCommitter.isPresent()) {
|
122 | 138 | ((SinkCommitter) sinkCommitter.get()).commit(commitInfos);
|
123 | 139 | } else {
|
|
0 commit comments