我试图创建一个相当大的表。使用配置单元~3百万行和~40K列。首先,我创建一个空表并将数据插入表中。
但是,尝试此操作时遇到错误。
Unable to acquire IMPLICIT, SHARED lock default after 100 attempts. FAILED: Error in acquiring locks: Locks on the underlying objects cannot be acquire. retry after some time
查询非常简单:
create external table database.dataset (
var1 decimal(10,2),
var2 decimal(10,2),
...
var40000 decimal(10,2)
) location 'hdfs://nameservice1/root/user1/project1';
之前有人看过这个错误吗? Cloudera表示列数没有限制,但显然在这里有一些系统限制。
此外,我可以在指定位置创建一个较小的配置单元表。
答案 0 :(得分:0)
浏览此博客文章,似乎可以识别并解决问题:http://gbif.blogspot.com/2014/03/lots-of-columns-with-hive-and-hbase.html
简短回答:hive在查询中传递的字符数有限制,但您可以通过以下选项更改来增加该字符数:
alter table "SERDE_PARAMS" alter column "PARAM_VALUE" type text;
未经测试,因为我使用不同的工具处理数据(针对上述问题),因为hive因未知原因而失败。如果您遇到类似的问题,请尝试一下并提供更新。