private ColumnDesc[] extractColumnFromMeta(HiveTableMeta hiveTableMeta) { int columnNumber = hiveTableMeta.allColumns.size(); List<ColumnDesc> columns = new ArrayList<ColumnDesc>(columnNumber); for (int i = 0; i < columnNumber; i++) { HiveTableMeta.HiveTableColumnMeta field = hiveTableMeta.allColumns.get(i); // skip unsupported fields, e.g. map<string, int> if (DataType.isKylinSupported(field.dataType)) { ColumnDesc cdesc = new ColumnDesc(); cdesc.setName(field.name.toUpperCase(Locale.ROOT)); // use "double" in kylin for "float" if ("float".equalsIgnoreCase(field.dataType)) { cdesc.setDatatype("double"); } else { cdesc.setDatatype(field.dataType); } cdesc.setId(String.valueOf(i + 1)); cdesc.setComment(field.comment); columns.add(cdesc); } else { logger.warn("Unsupported data type {}, excluding the field '{}'.", field.dataType, field.name); } } return columns.toArray(new ColumnDesc[0]); } }
@Test public void testIsSupportedType() { Assert.assertFalse(DataType.isKylinSupported("array<int>")); Assert.assertFalse(DataType.isKylinSupported("map<string, int>")); Assert.assertFalse(DataType.isKylinSupported(null)); } }
private ColumnDesc[] extractColumnFromMeta(HiveTableMeta hiveTableMeta) { int columnNumber = hiveTableMeta.allColumns.size(); List<ColumnDesc> columns = new ArrayList<ColumnDesc>(columnNumber); for (int i = 0; i < columnNumber; i++) { HiveTableMeta.HiveTableColumnMeta field = hiveTableMeta.allColumns.get(i); // skip unsupported fields, e.g. map<string, int> if (DataType.isKylinSupported(field.dataType)) { ColumnDesc cdesc = new ColumnDesc(); cdesc.setName(field.name.toUpperCase(Locale.ROOT)); // use "double" in kylin for "float" if ("float".equalsIgnoreCase(field.dataType)) { cdesc.setDatatype("double"); } else { cdesc.setDatatype(field.dataType); } cdesc.setId(String.valueOf(i + 1)); cdesc.setComment(field.comment); columns.add(cdesc); } else { logger.warn("Unsupported data type {}, excluding the field '{}'.", field.dataType, field.name); } } return columns.toArray(new ColumnDesc[0]); } }