Delta表SQL建表定义struct字段报mismatched input '<'错误如何解决?
Delta表struct嵌套类型建表错误解决方案
错误原因
- 分区字段
dt未在表字段列表中预先定义,Delta要求分区字段必须是显式声明的表字段之一 - struct类型内部字段的分隔语法错误,struct内部字段名和类型之间需要用冒号分隔,不能使用空格
正确建表语句
CREATE TABLE IF NOT EXISTS simple_table ( `id` string, `amount` decimal(20,4), `description` struct<`key`: string>, `dt` string COMMENT '分区字段' ) USING DELTA PARTITIONED BY (dt) LOCATION '/path_to_dir';
嵌套类型定义通用规范
- struct类型基础语法:
struct<字段名1: 类型1, 字段名2: 类型2, ...>,支持多层嵌套,示例如下:`user_info` struct<name: string, age: int, address: struct<city: string, postcode: string>> - 其他嵌套类型定义方式:
- Array数组类型:
array<元素类型>,示例:hobbies array<string> - Map键值对类型:
map<键类型, 值类型>,示例:ext_info map<string, string>
- Array数组类型:
内容的提问来源于stack exchange,提问作者Xenon Drey
相关产品推荐
相关产品推荐

