Search in sources :

Example 1 with StructField

use of org.apache.carbondata.core.metadata.datatype.StructField in project carbondata by apache.

the class CarbonWriterBuilder method buildCarbonTable.

/**
 * Build a {@link CarbonTable}
 */
private CarbonTable buildCarbonTable() {
    TableSchemaBuilder tableSchemaBuilder = TableSchema.builder();
    if (blockletSize > 0) {
        tableSchemaBuilder = tableSchemaBuilder.blockSize(blockSize);
    }
    List<String> sortColumnsList;
    if (sortColumns != null) {
        sortColumnsList = Arrays.asList(sortColumns);
    } else {
        sortColumnsList = new LinkedList<>();
    }
    for (Field field : schema.getFields()) {
        tableSchemaBuilder.addColumn(new StructField(field.getFieldName(), field.getDataType()), sortColumnsList.contains(field.getFieldName()));
    }
    String tableName = "_tempTable";
    String dbName = "_tempDB";
    TableSchema schema = tableSchemaBuilder.build();
    schema.setTableName(tableName);
    CarbonTable table = CarbonTable.builder().tableName(schema.getTableName()).databaseName(dbName).tablePath(path).tableSchema(schema).build();
    return table;
}
Also used : CarbonTable(org.apache.carbondata.core.metadata.schema.table.CarbonTable) StructField(org.apache.carbondata.core.metadata.datatype.StructField) StructField(org.apache.carbondata.core.metadata.datatype.StructField) TableSchema(org.apache.carbondata.core.metadata.schema.table.TableSchema) TableSchemaBuilder(org.apache.carbondata.core.metadata.schema.table.TableSchemaBuilder)

Example 2 with StructField

use of org.apache.carbondata.core.metadata.datatype.StructField in project carbondata by apache.

the class CarbonTableOutputFormat method setFileHeader.

private static void setFileHeader(Configuration configuration, CarbonLoadModel model) throws IOException {
    StructType inputSchema = getInputSchema(configuration);
    if (inputSchema == null || inputSchema.getFields().size() == 0) {
        throw new UnsupportedOperationException("Input schema must be set");
    }
    List<StructField> fields = inputSchema.getFields();
    StringBuilder builder = new StringBuilder();
    String[] columns = new String[fields.size()];
    int i = 0;
    for (StructField field : fields) {
        builder.append(field.getFieldName());
        builder.append(",");
        columns[i++] = field.getFieldName();
    }
    String header = builder.toString();
    model.setCsvHeader(header.substring(0, header.length() - 1));
    model.setCsvHeaderColumns(columns);
}
Also used : StructField(org.apache.carbondata.core.metadata.datatype.StructField) StructType(org.apache.carbondata.core.metadata.datatype.StructType)

Example 3 with StructField

use of org.apache.carbondata.core.metadata.datatype.StructField in project carbondata by apache.

the class CarbonColumnVectorWrapper method convertSparkToCarbonDataType.

// TODO: this is copied from carbondata-spark-common module, use presto type instead of this
private org.apache.carbondata.core.metadata.datatype.DataType convertSparkToCarbonDataType(org.apache.spark.sql.types.DataType dataType) {
    if (dataType instanceof StringType) {
        return DataTypes.STRING;
    } else if (dataType instanceof ShortType) {
        return DataTypes.SHORT;
    } else if (dataType instanceof IntegerType) {
        return DataTypes.INT;
    } else if (dataType instanceof LongType) {
        return DataTypes.LONG;
    } else if (dataType instanceof DoubleType) {
        return DataTypes.DOUBLE;
    } else if (dataType instanceof FloatType) {
        return DataTypes.FLOAT;
    } else if (dataType instanceof DateType) {
        return DataTypes.DATE;
    } else if (dataType instanceof BooleanType) {
        return DataTypes.BOOLEAN;
    } else if (dataType instanceof TimestampType) {
        return DataTypes.TIMESTAMP;
    } else if (dataType instanceof NullType) {
        return DataTypes.NULL;
    } else if (dataType instanceof DecimalType) {
        DecimalType decimal = (DecimalType) dataType;
        return DataTypes.createDecimalType(decimal.precision(), decimal.scale());
    } else if (dataType instanceof ArrayType) {
        org.apache.spark.sql.types.DataType elementType = ((ArrayType) dataType).elementType();
        return DataTypes.createArrayType(convertSparkToCarbonDataType(elementType));
    } else if (dataType instanceof StructType) {
        StructType structType = (StructType) dataType;
        org.apache.spark.sql.types.StructField[] fields = structType.fields();
        List<StructField> carbonFields = new ArrayList<>();
        for (org.apache.spark.sql.types.StructField field : fields) {
            carbonFields.add(new StructField(field.name(), convertSparkToCarbonDataType(field.dataType())));
        }
        return DataTypes.createStructType(carbonFields);
    } else {
        throw new UnsupportedOperationException("getting " + dataType + " from presto");
    }
}
Also used : LongType(org.apache.spark.sql.types.LongType) StructType(org.apache.spark.sql.types.StructType) StringType(org.apache.spark.sql.types.StringType) ArrayList(java.util.ArrayList) FloatType(org.apache.spark.sql.types.FloatType) ArrayType(org.apache.spark.sql.types.ArrayType) StructField(org.apache.carbondata.core.metadata.datatype.StructField) TimestampType(org.apache.spark.sql.types.TimestampType) DataType(org.apache.carbondata.core.metadata.datatype.DataType) DateType(org.apache.spark.sql.types.DateType) ShortType(org.apache.spark.sql.types.ShortType) BooleanType(org.apache.spark.sql.types.BooleanType) IntegerType(org.apache.spark.sql.types.IntegerType) DoubleType(org.apache.spark.sql.types.DoubleType) DecimalType(org.apache.spark.sql.types.DecimalType) NullType(org.apache.spark.sql.types.NullType)

Example 4 with StructField

use of org.apache.carbondata.core.metadata.datatype.StructField in project carbondata by apache.

the class TableSchemaBuilderSuite method testBuilder.

@Test
public void testBuilder() {
    TableSchemaBuilder builder = TableSchema.builder();
    builder.addColumn(new StructField("a", DataTypes.INT), true);
    builder.addColumn(new StructField("b", DataTypes.DOUBLE), false);
    TableSchema schema = builder.build();
    Assert.assertEquals(2, schema.getListOfColumns().size());
    List<ColumnSchema> columns = schema.getListOfColumns();
    Assert.assertEquals("a", columns.get(0).getColumnName());
    Assert.assertEquals("b", columns.get(1).getColumnName());
}
Also used : StructField(org.apache.carbondata.core.metadata.datatype.StructField) ColumnSchema(org.apache.carbondata.core.metadata.schema.table.column.ColumnSchema) Test(org.junit.Test)

Example 5 with StructField

use of org.apache.carbondata.core.metadata.datatype.StructField in project carbondata by apache.

the class TableSchemaBuilderSuite method testRepeatedColumn.

@Test(expected = IllegalArgumentException.class)
public void testRepeatedColumn() {
    TableSchemaBuilder builder = TableSchema.builder();
    builder.addColumn(new StructField("a", DataTypes.INT), true);
    builder.addColumn(new StructField("a", DataTypes.DOUBLE), false);
    TableSchema schema = builder.build();
}
Also used : StructField(org.apache.carbondata.core.metadata.datatype.StructField) Test(org.junit.Test)

Aggregations

StructField (org.apache.carbondata.core.metadata.datatype.StructField)7 DataType (org.apache.carbondata.core.metadata.datatype.DataType)2 ColumnSchema (org.apache.carbondata.core.metadata.schema.table.column.ColumnSchema)2 Test (org.junit.Test)2 ArrayList (java.util.ArrayList)1 DirectDictionaryGenerator (org.apache.carbondata.core.keygenerator.directdictionary.DirectDictionaryGenerator)1 ThriftWrapperSchemaConverterImpl (org.apache.carbondata.core.metadata.converter.ThriftWrapperSchemaConverterImpl)1 StructType (org.apache.carbondata.core.metadata.datatype.StructType)1 CarbonTable (org.apache.carbondata.core.metadata.schema.table.CarbonTable)1 TableSchema (org.apache.carbondata.core.metadata.schema.table.TableSchema)1 TableSchemaBuilder (org.apache.carbondata.core.metadata.schema.table.TableSchemaBuilder)1 CarbonHeaderReader (org.apache.carbondata.core.reader.CarbonHeaderReader)1 ProjectionDimension (org.apache.carbondata.core.scan.model.ProjectionDimension)1 ProjectionMeasure (org.apache.carbondata.core.scan.model.ProjectionMeasure)1 CarbonColumnVector (org.apache.carbondata.core.scan.result.vector.CarbonColumnVector)1 CarbonColumnarBatch (org.apache.carbondata.core.scan.result.vector.CarbonColumnarBatch)1 FileHeader (org.apache.carbondata.format.FileHeader)1 ArrayType (org.apache.spark.sql.types.ArrayType)1 BooleanType (org.apache.spark.sql.types.BooleanType)1 DateType (org.apache.spark.sql.types.DateType)1