{"record":{"id":"7b66feb1b1db62c1","repo":"apache/seatunnel","slug":"unsupported-data-type-7b66fe","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Unsupported iceberg type: %s","messagePattern":"Unsupported iceberg type: (.+?)","errorType":"error_code","errorClass":"IcebergConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/data/DefaultDeserializer.java","lineNumber":152,"sourceCode":"            case MAP:\n                Map<Object, Object> icebergMap = Map.class.cast(icebergValue);\n                Types.MapType icebergMapType = (Types.MapType) icebergType;\n                Map seatunnelMap = new HashMap();\n                MapType seatunnelMapType = (MapType) seaTunnelType;\n                for (Map.Entry entry : icebergMap.entrySet()) {\n                    seatunnelMap.put(\n                            convert(\n                                    icebergMapType.keyType(),\n                                    entry.getKey(),\n                                    seatunnelMapType.getKeyType()),\n                            convert(\n                                    icebergMapType.valueType(),\n                                    entry.getValue(),\n                                    seatunnelMapType.getValueType()));\n                }\n                return seatunnelMap;\n            default:\n                throw new IcebergConnectorException(\n                        CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                        String.format(\"Unsupported iceberg type: %s\", icebergType));\n        }\n    }\n}\n","sourceCodeStart":134,"sourceCodeEnd":158,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/data/DefaultDeserializer.java#L134-L158","documentation":"DefaultDeserializer.convert switches over the Iceberg Types.TypeID of the source column; Iceberg types without a SeaTunnel mapping (e.g. nested/advanced type variants) fall into default and raise IcebergConnectorException with UNSUPPORTED_DATA_TYPE.","triggerScenarios":"Reading an Iceberg table whose schema contains a type the deserializer has no case for (certain nested/UUID/timestamp-variant configurations depending on version), during deserialize()/seatunnelFieldValue().","commonSituations":"Iceberg tables written by Spark/Flink with exotic types (UUID, timestamps adjusted to non-UTC zones, deep nests) read by SeaTunnel; schema drift after upstream writers add new column types.","solutions":["Change the table schema to use supported types (map exotic types to string/long via Iceberg schema evolution or a view).","Upgrade the connector, which may add mappings for the type.","Filter out or transform unsupported columns before reading.","Catch IcebergConnectorException and route the row/field to a dead-letter path."],"exampleFix":"// before\n// reading a UUID column directly\n// after\nALTER TABLE t REPLACE COLUMN uuid_col TYPE STRING; -- then read as string","handlingStrategy":"validation","validationCode":"for (Types.NestedField f : schema.columns()) {\n    if (!SUPPORTED_IDS.contains(f.type().typeId())) throw new IllegalStateException(\"Unsupported iceberg type: \" + f.type());\n}","typeGuard":"boolean isSupported(IcebergType t) { return t instanceof Types.BooleanType || t instanceof Types.IntegerType || t instanceof Types.LongType || t instanceof Types.DoubleType || t instanceof Types.StringType || t instanceof Types.TimestampType || t instanceof Types.ListType || t instanceof Types.MapType || t instanceof Types.StructType; }","tryCatchPattern":"try { row = deserializer.deserialize(record); } catch (IcebergConnectorException e) { log.error(\"Unsupported type at read: {}\", e.getMessage()); }","preventionTips":["Inspect table schema types before ingestion","Keep connector version updated for new Iceberg types","Downcast exotic types (UUID etc.) to strings at write time upstream"],"tags":["iceberg","type-mapping","unsupported-type","deserialization"],"backgroundTag":"unsupported-dtype","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}