{"record":{"id":"11f5d9f2904d8104","repo":"apache/seatunnel","slug":"unsupported-data-type-11f5d9","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Doesn't support KUDU type '%s' .","messagePattern":"Doesn't support KUDU type '(.+?)' \\.","errorType":"error_code","errorClass":"KuduConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/kuduclient/KuduTypeMapper.java","lineNumber":70,"sourceCode":"            case INT64:\n                return BasicType.LONG_TYPE;\n            case DECIMAL:\n                ColumnTypeAttributes typeAttributes =\n                        columnSchemaList.get(colIndex).getTypeAttributes();\n                return new DecimalType(typeAttributes.getPrecision(), typeAttributes.getScale());\n            case FLOAT:\n                return BasicType.FLOAT_TYPE;\n            case DOUBLE:\n                return BasicType.DOUBLE_TYPE;\n\n            case STRING:\n                return BasicType.STRING_TYPE;\n            case UNIXTIME_MICROS:\n                return LocalTimeType.LOCAL_DATE_TIME_TYPE;\n            case BINARY:\n                return PrimitiveByteArrayType.INSTANCE;\n            default:\n                throw new KuduConnectorException(\n                        CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                        String.format(\"Doesn't support KUDU type '%s' .\", kuduType));\n        }\n    }\n}\n","sourceCodeStart":52,"sourceCodeEnd":76,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/kuduclient/KuduTypeMapper.java#L52-L76","documentation":"KuduTypeMapper.mapping() translates Kudu column types to SeaTunnel types. Any Kudu type not in the handled switch (e.g. unexpected or newly added Kudu types) triggers KuduConnectorException with UNSUPPORTED_DATA_TYPE. It means the connector cannot map this column type to a SeaTunnel type.","triggerScenarios":"Reading a Kudu table whose schema contains a column type outside the supported set handled by the mapper's switch statement; reached via mapping() and its recursive calls for struct/map types.","commonSituations":"Tables created with newer Kudu types or exotic nested types (structs/maps containing unmappable element types); schema drift after the job config was written.","solutions":["Check the Kudu table schema for unsupported column types","Alter the table or exclude unsupported columns from the read","Upgrade SeaTunnel to a version supporting the type","Extend KuduTypeMapper if the type can be reasonably mapped"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"// Before reading, inspect the Kudu schema and reject unsupported types:\nfor (ColumnSchema col : kuduTable.getSchema().getColumns()) {\n  switch (col.getType()) {\n    case STRING: case INT*: case UNIXTIME_MICROS: case BINARY: /* supported */ break;\n    default: throw new IllegalStateException(\"Unsupported Kudu type: \" + col.getType());\n  }\n}","typeGuard":"// Java guard\nboolean isSupportedKuduType(KuduType t) {\n  return t == KuduType.STRING || t == KuduType.UNIXTIME_MICROS || t == KuduType.BINARY /* + handled numerics */;\n}","tryCatchPattern":"try { catalogTable = catalog.getTable(path); } catch (KuduConnectorException e) {\n  if (\"UNSUPPORTED_DATA_TYPE\".equals(e.getSeaTunnelErrorCode())) { /* exclude/alter column */ }\n}","preventionTips":["Check table schema types before ingesting with SeaTunnel","Avoid nested struct/map columns with exotic element types","Keep the connector version aligned with your Kudu types"],"tags":["kudu","type-mapping","schema"],"backgroundTag":"unsupported-dtype","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}