Hive:无法在包含100个或更多分区列的表中插入数据错误:在"PART_NAME"列中,最大长度为767

Vai*_*ane 5 hadoop hive cloudera

我正在使用hive,我需要创建一个包含'n'普通列和100或更多作为分区列的表,我能够成功创建该表.现在,当我用另一个具有相同模式的表的数据加载该表并且所有列都是非分区列时,我收到如下错误:

异常MetaException失败(消息:尝试存储值 失败,异常MetaException(消息:尝试存储值"c1 = v1/c2 = v2/c3 = v3/.... c100 = v100" 在列" PART_NAME"中具有最大值长度767.请更正您的数据!)

通过考虑最后一行错误,我试图减少列名称及其值,以便生成的分区路径变得更短,并且它工作!但它不应该像列名称的实时场景大小那样,它们的值可以是分区路径的任何东西.

这是我的创建表查询:

CREATE TABLE xyz(c0 int) PARTITIONED BY(c1 String,c2 String,c3 String,c4 String ....... c100 String)ROW FORMAT DELIMITED FIELDS由'|'终止 存储为文本文件

这是我插入查询:

INSERT INTO TABLE xyz PARTITION(gc1,c2,c3 ....,c100)SELECT c0,c1,c2,c3,c4 ....,c100 FROM table123;

我做错了什么或者我是否应该设置一些属性来使用100或更多的分区?
请给我任何线索我被困在这上面.
谢谢

Man*_*pta 1

我同意专家的观点,我们不应该在一个表中进行如此多的分区。

另外我想引用这一点,因为大多数节点都是基于 unix/linux 的,我们无法创建长度大于 255 字节的文件夹或文件名。这可能是您收到此错误的原因,因为分区只是一个文件夹。

对于大多数文件系统(包括 EXT4),Linux 的最大文件名长度为 255 个字符,最大路径为 4096 个字符。eCryptfs 是一个分层文件系统。