Hi Tongxin, This is a bug introduced by KYLIN-1982. Would you please open a JIRA and contribute a patch if possible? Thanks.
2016-10-17 15:27 GMT+08:00 仇同心 <qiutong...@jd.com>: > Hi, > > Throw an exception information when using > org.apache.kylin.storage.hbase.util > .CubeMigrationCLI migration cube, kylin version is kylin-1.5.4.1-HBase1.x. > > > > 2016-10-17 14:57:25,595 INFO [main CubeMigrationCLI:325]: Executing > operation: ADD_INTO_PROJECT:CUBE[name=testc], testc, test, > > 2016-10-17 14:57:25,595 ERROR [main CubeMigrationCLI:307]: error met > > java.lang.ClassCastException: org.apache.kylin.cube.CubeInstance cannot > be cast to java.lang.String > > at org.apache.kylin.storage.hbase.util.CubeMigrationCLI. > doOpt(CubeMigrationCLI.java:425) > > at org.apache.kylin.storage.hbase.util.CubeMigrationCLI. > doOpts(CubeMigrationCLI.java:304) > > at org.apache.kylin.storage.hbase.util.CubeMigrationCLI. > moveCube(CubeMigrationCLI.java:153) > > at org.apache.kylin.storage.hbase.util.CubeMigrationCLI. > moveCube(CubeMigrationCLI.java:167) > > at org.apache.kylin.storage.hbase.util.CubeMigrationCLI. > main(CubeMigrationCLI.java:102) > > 2016-10-17 14:57:25,597 INFO [main CubeMigrationCLI:308]: Try undoing > previous changes > > > > In github , the source code of kylin - 1.5.4.1 - HBase1. X branch: > > case ADD_INTO_PROJECT: { > > String cubeName = (String) opt.params[0]; > > String projectName = (String) opt.params[1]; > > String projectResPath = ProjectInstance. > concatResourcePath(projectName); > > Serializer<ProjectInstance> projectSerializer = new > JsonSerializer<ProjectInstance>(ProjectInstance.class); > > ProjectInstance project = dstStore.getResource(projectResPath, > ProjectInstance.class, projectSerializer); > > project.removeRealization(RealizationType.CUBE, cubeName); > > project.addRealizationEntry(RealizationType.CUBE, > cubeName); > > dstStore.putResource(projectResPath, project, > projectSerializer); > > logger.info("Project instance for " + projectName + " is > corrected"); > > break; > > } > > > > This version of kylin 1.5.4.1 -- cdh5.7 is the same. > > > > > > the source code of master X branch: > > case ADD_INTO_PROJECT: { > > CubeInstance srcCube = (CubeInstance) opt.params[0]; > > String cubeName = (String) opt.params[1]; > > String projectName = (String) opt.params[2]; > > String modelName = srcCube.getDescriptor().getModelName(); > > > > String projectResPath = ProjectInstance.concatResourcePath( > projectName); > > Serializer<ProjectInstance> projectSerializer = new > JsonSerializer<ProjectInstance>(ProjectInstance.class); > > ProjectInstance project = dstStore.getResource(projectResPath, > ProjectInstance.class, projectSerializer); > > > > project.addModel(modelName); > > project.removeRealization(RealizationType.CUBE, cubeName); > > project.addRealizationEntry(RealizationType.CUBE, cubeName); > > > > dstStore.putResource(projectResPath, project, > projectSerializer); > > logger.info("Project instance for " + projectName + " is > corrected"); > > break;. > > } > > > > I compare the two source code: kylin - 1.5.4.1 - HBase1. X branch 、kylin > 1.5.4.1 -- cdh5.7 and master, I think in kylin - 1.5.4.1 - HBase1 .x 、kylin > 1.5.4.1 -- cdh5.7 branch , the code of CubeMigrationCLI is wrong? > > > > Thank you! > -- Best regards, Shaofeng Shi 史少锋