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

时间:2019-04-25 11:50:31

标签: hive

我非常确定像STRUCT这样的复杂类型不能是分区列的类型。但是我不确定所有原始类型是否有效。我读了很多文档,但是什么也没找到。

1 个答案:

答案 0 :(得分:0)

仅允许使用基本类型。并且应该适合UNIX中的最大文件名限制(255- column_name_length-1等号,未完全检查),因为分区是一个文件夹。

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

create table test_t(id int) partitioned by (somemap map<string, string>);
  

失败:SemanticException [错误10126]:“分区”列必须为   基本类型。找到一些地图类型:地图

它允许在分区列中创建具有原始类型的表,即使使用BINARY也可以,尽管文件夹名称中并非所有字符都允许,并且按原样加载二进制文件会导致失败。

所有内容都可以序列化为带有允许字符的字符串。并且,如果需要,可以将结构存储为字符串并反序列化,尽管这不切实际,因为您需要对分区进行修剪才能工作,并且分区过滤器中的功能将禁用此功能。