[ 
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)

Reply via email to