Hive 配置单元中允许的分区列数据类型是什么?

Hive 配置单元中允许的分区列数据类型是什么?,hive,partition,hive-metastore,hive-partitions,hiveddl,Hive,Partition,Hive Metastore,Hive Partitions,Hiveddl,我很确定像STRUCT这样的复杂类型不能是分区列的类型。但我不确定所有的基元类型是否都有效。我已经阅读了很多文档,但没有找到任何内容。只允许使用基本类型。并且应该符合UNIX中的最大文件名限制(255-列名称长度-1表示等号,未精确检查),因为分区是文件夹 如果尝试创建具有复杂类型的表作为分区,则会失败: create table test_t(id int) partitioned by (somemap map<string, string>); 创建由(somemap)分区的

我很确定像STRUCT这样的复杂类型不能是分区列的类型。但我不确定所有的基元类型是否都有效。我已经阅读了很多文档,但没有找到任何内容。

只允许使用基本类型。并且应该符合UNIX中的最大文件名限制(255-列名称长度-1表示等号,未精确检查),因为分区是文件夹

如果尝试创建具有复杂类型的表作为分区,则会失败:

create table test_t(id int) partitioned by (somemap map<string, string>);
创建由(somemap)分区的表test_t(id int);
失败:SemanticException[错误10126]:分区列必须为 基本类型。找到类型为map的映射

它允许使用分区列中的基元类型创建表,即使使用二进制,但文件夹名称中不允许使用所有字符,按原样加载二进制将导致失败

毕竟,所有内容都可以序列化为带有允许字符的字符串。如果您愿意,结构可以存储为字符串并反序列化回来,尽管这并不实用,因为您需要分区修剪才能工作,分区过滤器中的函数将禁用此功能