kylin報錯解決方案
阿新 • • 發佈:2018-12-04
1、#4 Step Name: Build Dimension Dictionary報錯:
java.lang.IllegalStateException: The table: tableName Dup key found, key=[xxx], value1=*], value2=[***] at org.apache.kylin.dict.lookup.LookupTable.initRow(LookupTable.java:86) at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.java:69) at org.apache.kylin.dict.lookup.LookupStringTable.init(LookupStringTable.java:79) at org.apache.kylin.dict.lookup.LookupTable.<init>(LookupTable.java:57) at org.apache.kylin.dict.lookup.LookupStringTable.<init>(LookupStringTable.java:65) at org.apache.kylin.cube.CubeManager$DictionaryAssist.getLookupTable(CubeManager.java:1077) at org.apache.kylin.cube.CubeManager.getLookupTable(CubeManager.java:975) at org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:95) at org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(DictionaryGeneratorCLI.java:49) at org.apache.kylin.engine.mr.steps.CreateDictionaryJob.run(CreateDictionaryJob.java:71) at org.apache.kylin.engine.mr.MRUtil.runMRJob(MRUtil.java:97) at org.apache.kylin.engine.mr.common.HadoopShellExecutable.doWork(HadoopShellExecutable.java:63) at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:162) at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:67) at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:162) at org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:300) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) result code:2
出現這種情況的原因是因為事實表與維度表使用left_join在做關聯時,事實表中的主鍵出現了一對多的情況,即kylin在檢查唯一性報的錯,
解決方案:
讓表之間保持1對1的關係