{"record":{"id":"5c8f2cf1b05b00a7","repo":"apache/seatunnel","slug":"seatunnel-transform-task-factoryidentifier-exe-5c8f2c","errorCode":null,"errorMessage":"SeaTunnel transform task: ${factoryIdentifier} execute error","messagePattern":"SeaTunnel transform task: (.+?) execute error","errorType":"exception","errorClass":"TaskExecuteException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-spark-starter/seatunnel-spark-starter-common/src/main/java/org/apache/seatunnel/core/starter/spark/execution/TransformExecuteProcessor.java","lineNumber":162,"sourceCode":"                        new TableTransformFactoryContext(\n                                dataset.getCatalogTables(),\n                                ReadonlyConfig.fromConfig(pluginConfig),\n                                classLoader);\n                ConfigValidator.of(context.getOptions()).validate(factory.optionRule());\n                SeaTunnelTransform transform = factory.createTransform(context).createTransform();\n\n                Dataset<Row> inputDataset = sparkTransform(transform, dataset);\n                registerInputTempView(pluginConfig, inputDataset);\n                String pluginOutputIdentifier =\n                        ReadonlyConfig.fromConfig(pluginConfig).get(PLUGIN_OUTPUT);\n                outputTables.put(\n                        pluginOutputIdentifier,\n                        new DatasetTableInfo(\n                                inputDataset,\n                                transform.getProducedCatalogTables(),\n                                pluginOutputIdentifier));\n            } catch (Exception e) {\n                throw new TaskExecuteException(\n                        String.format(\n                                \"SeaTunnel transform task: %s execute error\",\n                                plugins.get(i).factoryIdentifier()),\n                        e);\n            }\n        }\n        return new ArrayList<>(outputTables.values());\n    }\n\n    private Dataset<Row> sparkTransform(SeaTunnelTransform transform, DatasetTableInfo tableInfo) {\n        MultiTableManager inputManager =\n                new MultiTableManager(tableInfo.getCatalogTables().toArray(new CatalogTable[0]));\n        MultiTableManager outputManager =\n                new MultiTableManager(\n                        (CatalogTable[])\n                                transform.getProducedCatalogTables().toArray(new CatalogTable[0]));\n        Dataset<Row> stream = tableInfo.getDataset();\n        ExpressionEncoder<Row> encoder = RowEncoder.apply(outputManager.getTableSchema());","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-starter-common/src/main/java/org/apache/seatunnel/core/starter/spark/execution/TransformExecuteProcessor.java#L144-L180","documentation":"TransformExecuteProcessor.execute wraps each transform's dataset conversion in a try/catch and rethrows as TaskExecuteException with the message 'SeaTunnel transform task: <factoryIdentifier> execute error'. It identifies WHICH transform plugin failed; the actual cause (schema mismatch, UDF error, Spark analysis exception) is in the attached cause.","triggerScenarios":"Any Exception thrown while a transform plugin (identified by its factoryIdentifier, e.g. 'SQL', 'FieldMapper', 'Filter') processes its input Dataset and produces catalog tables — such as SQL syntax errors in the sql transform, field name mismatches in FieldMapper, or incompatible input schemas.","commonSituations":"SQL transform referencing a column that does not exist in the upstream table; wrong case-sensitive table/column names; transform output schema conflicting with sink expectations; plugin jar version mismatch.","solutions":["Check the 'Caused by' stack trace for the underlying transform error","Validate the transform config: for the SQL transform run the query against the upstream schema; for FieldMapper verify field mappings exist","Print/inspect the upstream catalog table schema and align transform output with it","Ensure the transform plugin jar version matches the SeaTunnel version"],"exampleFix":"// before\nTransformSql = \"SELECT unknow_column FROM dual\"\n// after\nTransformSql = \"SELECT existing_column FROM my_table\"","handlingStrategy":"try-catch","validationCode":"// Validate transform SQL/mappings against upstream schema before submit (dry-run static)\n// sh bin/seatunnel.sh --config job.conf -e local --dry-run static","typeGuard":null,"tryCatchPattern":"try {\n    runSparkJob();\n} catch (TaskExecuteException e) {\n    log.error(\"Transform failed: \" + e.getMessage() + \", root:\", e.getCause());\n}","preventionTips":["Dry-run jobs to catch transform schema issues early","Verify columns referenced by SQL/FieldMapper transforms exist upstream","Keep transform plugin versions aligned with the SeaTunnel distribution"],"tags":["spark","transform","job-failure"],"backgroundTag":"job-execution-failed","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}