创建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中并不存在主外键