kylin填坑记--创建cube时遇到的两个坑

在创建Kylin Cube时,遇到两个关键问题:一是维度表中longtext类型的字段长度超出Short.MAX_VALUE导致错误,即使字段未加入dimensions也会检查;二是即使在Hive中无主外键概念,Kylin仍会检查维度表字段的唯一性。解决办法包括缩短字段长度,重新导入数据,以及确保与事实表关联的维度字段唯一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建cube时,最容易出错的地方就是在 Build Dimension Dictionary这步,也就是第四步。如下图


这步,kylin后台会做很多关于字段的检查。遇到的两个坑,正是发生在这步,因为数据本身有这样的问题:

第一,维度表中类型为longtext的字段description(存的描述信息,很长),其长度超出Short.MAX_VALUE(short值得范围:-32768-32767)。尽管这个字段在model和cube创建时都未加入dimensions中,但还是报错了,也就是说,kylin会检查所有维度表字段里value的长度,不管有没有加到dimensions里。报错源代码如下:

if (maxValueLength < 0) {
    throw new IllegalStateException("maxValueLength is negative (" + maxValueLength
            + "). Dict value is too long, whose length is larger than " + Short.MAX_VALUE);
}

第二,建model时,一般会把事实表的外键和维度表的主键做关联,但在hive中并不存在主外键这种概念,所以维度表不管是不是主键,kylin都会检查其唯一性。否则,一张事实表的一条记录,会关联出两条或多条维度表的记录,这种情况肯定是非法的。因此,与事实表做关联的的维度表字段必须是唯一的,且非空,即为主键(但hive中不存主键这一说)。

针对上面两个坑,我们把错误日志记录下来了<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值