[
https://issues.apache.org/jira/browse/KYLIN-830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14587523#comment-14587523
]
Shaofeng SHI commented on KYLIN-830:
------------------------------------
In v0.6 Kylin may build a dictionary on a lookup table's PK; When migrate the
cube to v0.7, Kylin will always prefer to use the FK as the rowkey; So the new
segment built with v0.7 will create a dictionary with fact table's FK; When
merge the new segment with legacy segment, the dictionary manager would check
whether the merging dictionaries are from the same table/column; This condition
will not be fulfilled for such legacy cubes, so this error was thrown;
To be compatible with legacy cubes, the strong check on this condition will be
removed, only a warning messege will be output to log;
> Cube merge failed after migrating from v0.6 to v0.7
> ---------------------------------------------------
>
> Key: KYLIN-830
> URL: https://issues.apache.org/jira/browse/KYLIN-830
> Project: Kylin
> Issue Type: Bug
> Affects Versions: v0.7.1
> Reporter: Shaofeng SHI
> Assignee: Shaofeng SHI
>
> Migrate a v0.6 cube to v0.7, build a new segment, and then merge it with old
> segment, got the error in the first step:
> {code}
> java.lang.IllegalArgumentException: Merging dictionaries are not structurally
> equal(regardless of signature).
> at
> org.apache.kylin.dict.DictionaryManager.mergeDictionary(DictionaryManager.java:127)
> at
> org.apache.kylin.job.cube.MergeDictionaryStep.mergeDictionaries(MergeDictionaryStep.java:141)
> at
> org.apache.kylin.job.cube.MergeDictionaryStep.makeDictForNewSegment(MergeDictionaryStep.java:131)
> at
> org.apache.kylin.job.cube.MergeDictionaryStep.doWork(MergeDictionaryStep.java:68)
> at
> org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:107)
> at
> org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:50)
> at
> org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:107)
> at
> org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:132)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)