Hi all!
I am running 2.x-staging branch with the newest code.
when I create a new cube and save , got the exception like this:
2015-12-15 23:12:15,338 ERROR [http-bio-7070-exec-4] controller.CubeController:
The cube definition is not valid.
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize
instance of java.lang.String out of START_ARRAY token
at [Source: java.io.StringReader@6f7f51cb; line: 10, column: 22] (through
reference chain:
org.apache.kylin.cube.model.CubeDesc["dimensions"]->org.apache.kylin.cube.model.DimensionDesc["column"])
at
com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
at
com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:575)
at
com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:46)
at
com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)
at
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:464)
at
com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:107)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:230)
at
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:207)
at
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23)
at
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:464)
at
com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:107)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
at
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
at org.apache.kylin.common.util.JsonUtil.readValue(JsonUtil.java:54)
at
org.apache.kylin.rest.controller.CubeController.deserializeCubeDesc(CubeController.java:699)
at
org.apache.kylin.rest.controller.CubeController.saveCubeDesc(CubeController.java:327)
cube json :
"dimensions": [
{
"name": "KYLIN.TEST_DATA_TYPE.DIM_COL",
"table": "KYLIN.TEST_DATA_TYPE",
"hierarchy": false,
"derived": null,
"column": [
"DIM_COL"
],
"id": 1
},
{
"name": "KYLIN.TEST_DATA_TYPE.DT_COL",
"table": "KYLIN.TEST_DATA_TYPE",
"hierarchy": false,
"derived": null,
"column": [
"DT_COL"
],
"id": 2
}
],
in the json, the dimension’s “column" property is Array type.
but in the org.apache.kylin.cube.model.DimensionDesc.java the column is a
String type.
@JsonProperty("name")
private String name;
@JsonProperty("table")
private String table;
@JsonProperty("column")
private String column;
@JsonProperty("derived")
private String[] derived;
and I see the org.apache.kylin.cube.model.v3.DimensionDesc.java is match the
json from save.
@JsonProperty("id")
private int id;
@JsonProperty("name")
private String name;
@JsonProperty("hierarchy")
private boolean isHierarchy;
@JsonProperty("table")
private String table;
@JsonProperty("column")
private String[] column;
@JsonProperty("derived")
private String[] derived;
Is the meta version change? and how to use the v3 version metadata?