hive中分区列允许的数据类型是什么?
What are the allowed data types of partition column in hive?
我很确定像STRUCT这样的复杂类型不能成为分区列的类型。但我不确定所有原始类型是否有效。我已经阅读了很多文档,但没有找到任何东西。
只允许原始类型。并且应该符合 UNIX 中的最大文件名限制(等号为 255- column_name_length-1,未准确检查),因为分区是一个文件夹。
如果您尝试使用复杂类型创建 table 作为分区,它会失败:
create table test_t(id int) partitioned by (somemap map<string, string>);
FAILED: SemanticException [Error 10126]: Partition column must be of
primitive type. Found somemap of type: map
它允许在分区列中使用原始类型创建 table,即使是 BINARY,但并非所有字符都允许在文件夹名称中使用,并且按原样加载二进制文件会导致失败。
毕竟一切都可以序列化为允许字符的字符串。如果你愿意,结构可以存储为字符串并反序列化回来,尽管这不切实际,因为你需要分区修剪才能工作,分区过滤器中的函数将禁用此功能。
我很确定像STRUCT这样的复杂类型不能成为分区列的类型。但我不确定所有原始类型是否有效。我已经阅读了很多文档,但没有找到任何东西。
只允许原始类型。并且应该符合 UNIX 中的最大文件名限制(等号为 255- column_name_length-1,未准确检查),因为分区是一个文件夹。
如果您尝试使用复杂类型创建 table 作为分区,它会失败:
create table test_t(id int) partitioned by (somemap map<string, string>);
FAILED: SemanticException [Error 10126]: Partition column must be of primitive type. Found somemap of type: map
它允许在分区列中使用原始类型创建 table,即使是 BINARY,但并非所有字符都允许在文件夹名称中使用,并且按原样加载二进制文件会导致失败。
毕竟一切都可以序列化为允许字符的字符串。如果你愿意,结构可以存储为字符串并反序列化回来,尽管这不切实际,因为你需要分区修剪才能工作,分区过滤器中的函数将禁用此功能。