【问题标题】:What are the allowed data types of partition column in hive?hive 中允许的分区列数据类型有哪些?
【发布时间】:2019-09-14 20:23:19
【问题描述】:

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

【问题讨论】:

    标签: hive partition hive-metastore hive-partitions hiveddl


    【解决方案1】:

    只允许原始类型。并且应该符合 UNIX 中的最大文件名限制(等号为 255-column_name_length-1,未精确检查),因为分区是一个文件夹。

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

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

    失败:SemanticException [错误 10126]:分区列必须是 原始类型。找到了一些类型的地图:map

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 1970-01-01
      • 2017-12-26
      • 2015-04-28
      • 2020-10-13
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 2016-03-02
      相关资源
      最近更新 更多