1. 程式人生 > >kylin報錯解決方案

kylin報錯解決方案

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的關係