apache/seatunnel · warning
Some sink tables were skipped in Spark starter.
Error message
Some sink tables were skipped in Spark starter.
What it means
This warning from the Spark starter's SinkExecuteProcessor.execute indicates that in a multi-table Spark job some sink tables failed and were skipped, but at least one sink was successfully created, so the job proceeds. A formatted per-table failure summary accompanies the message. If all tables had been skipped, a TaskExecuteException ('All candidate sink tables were skipped in Spark starter.') is thrown instead.
Source
Thrown at seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/java/org/apache/seatunnel/core/starter/spark/execution/SinkExecuteProcessor.java:209
classLoader);
createdAnySink = true;
String applicationId =
sparkRuntimeEnvironment.getSparkSession().sparkContext().applicationId();
CatalogTable[] catalogTables =
datasetTableInfo.getCatalogTables().toArray(new CatalogTable[0]);
SparkSinkInjector.inject(
dataset.write(), sink, catalogTables, applicationId, parallelism)
.option("checkpointLocation", "/tmp")
.save();
}
if (!createdAnySink && !skippedTables.isEmpty()) {
throw new TaskExecuteException(
MultiTableFailureHelper.formatFailedTableSummary(
"All candidate sink tables were skipped in Spark starter.",
skippedTables));
}
if (createdAnySink && !skippedTables.isEmpty()) {
log.warn(
MultiTableFailureHelper.formatFailedTableSummary(
"Some sink tables were skipped in Spark starter.", skippedTables));
}
// the sink is the last stream
return null;
}
public void handleSaveMode(SeaTunnelSink sink) {
if (sink instanceof SupportSaveMode) {
Optional<SaveModeHandler> saveModeHandler =
((SupportSaveMode) sink).getSaveModeHandler();
if (saveModeHandler.isPresent()) {
try (SaveModeHandler handler = saveModeHandler.get()) {
handler.open();
new SaveModeExecuteWrapper(handler).execute();
} catch (Exception e) {
throw new SeaTunnelRuntimeException(HANDLE_SAVE_MODE_FAILED, e);
}View on GitHub (pinned to cf67b549a7)
Solutions
- Read the failure summary in the log to identify the failing table path and root cause.
- Fix the failing sink's config/environment and rerun the job to backfill its data.
- Isolate problematic tables into separate jobs if partial writes are unacceptable.
Defensive patterns
Strategy: try-catch
Validate before calling
for (TablePath tp : sinkTablePaths) { checkSinkReachable(tp); } Try / catch
try {
job.run();
} catch (TaskExecuteException e) {
// all sink tables skipped in Spark starter - halt and alert
throw e;
} Prevention
- Pre-validate each sink target (connectivity, auth, schema) before submission.
- Alert on 'sink tables were skipped' warnings in job logs.
- Keep Spark connector jars installed and version-matched.
When it happens
Trigger: During execute(), creating/writing one sink fails (connection, auth, schema) and is recorded via logSkippedTable, while other tables' sinks initialize fine.
Common situations: Multi-table writes where one target cluster is unreachable or credentials differ; schema drift on one table; a sink plugin missing for one format.
Related errors
- All candidate sink tables were skipped in Spark starter.
- All candidate sink tables were skipped in Spark starter.
- Skip failed sink table in Spark starter: {}
- Some sink tables were skipped in Spark starter.
- Skip failed sink table in Spark starter: {}
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/8b9053cc44421d8f.
Report an issue: GitHub.