创建一个包含~40K列的配置单元表

时间:2015-06-12 18:18:02

标签: hive cloudera hiveql

我试图创建一个相当大的表。使用配置单元~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表示列数没有限制,但显然在这里有一些系统限制。

此外,我可以在指定位置创建一个较小的配置单元表。

1 个答案:

答案 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因未知原因而失败。如果您遇到类似的问题,请尝试一下并提供更新。