Search in sources :

Example 61 with Field

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

the class CarbonIUDTest method testDeleteInMultipleSegments.

@Test
public void testDeleteInMultipleSegments() throws Exception {
    String path = "./testWriteFiles";
    FileUtils.deleteDirectory(new File(path));
    Field[] fields = new Field[3];
    fields[0] = new Field("name", DataTypes.STRING);
    fields[1] = new Field("age", DataTypes.INT);
    fields[2] = new Field("doubleField", DataTypes.DOUBLE);
    TestUtil.writeFilesAndVerify(10, new Schema(fields), path);
    TestUtil.writeFilesAndVerify(10, new Schema(fields), path);
    TestUtil.writeFilesAndVerify(10, new Schema(fields), path);
    CarbonIUD.getInstance().delete(path, "age", "2").delete(path, "name", "robot2").commit();
    CarbonReader reader = CarbonReader.builder(path).projection(new String[] { "name", "age", "doubleField" }).build();
    int i = 0;
    while (reader.hasNext()) {
        Object[] row = (Object[]) reader.readNextRow();
        assert (!(((String) row[0]).contains("robot2")));
        assert (((int) (row[1])) != 2);
        assert ((double) row[2] != 1.0);
        i++;
    }
    Assert.assertEquals(i, 27);
    reader.close();
    FileUtils.deleteDirectory(new File(path));
}
Also used : Field(org.apache.carbondata.core.metadata.datatype.Field) File(java.io.File) Test(org.junit.Test)

Example 62 with Field

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

the class CarbonIUDTest method testUpdate.

@Test
public void testUpdate() throws Exception {
    String path = "./testWriteFiles";
    FileUtils.deleteDirectory(new File(path));
    Field[] fields = new Field[3];
    fields[0] = new Field("name", DataTypes.STRING);
    fields[1] = new Field("age", DataTypes.INT);
    fields[2] = new Field("doubleField", DataTypes.DOUBLE);
    TestUtil.writeFilesAndVerify(20, new Schema(fields), path);
    CarbonIUD.getInstance().update(path, "age", "2", "age", "3").commit();
    CarbonIUD.getInstance().update(path, "name", "robot2", "age", "3").update(path, "age", "12", "name", "robot13").commit();
    ColumnExpression columnExpression1 = new ColumnExpression("age", DataTypes.INT);
    EqualToExpression equalToExpression1 = new EqualToExpression(columnExpression1, new LiteralExpression("3", DataTypes.INT));
    CarbonReader reader1 = CarbonReader.builder(path).projection(new String[] { "name", "age", "doubleField" }).filter(equalToExpression1).build();
    int i = 0;
    while (reader1.hasNext()) {
        Object[] row = (Object[]) reader1.readNextRow();
        assert (((int) (row[1])) == 3);
        i++;
    }
    Assert.assertEquals(i, 3);
    reader1.close();
    CarbonReader reader2 = CarbonReader.builder(path).projection(new String[] { "name", "age", "doubleField" }).build();
    i = 0;
    while (reader2.hasNext()) {
        Object[] row = (Object[]) reader2.readNextRow();
        assert (((int) (row[1])) != 2);
        i++;
    }
    Assert.assertEquals(i, 20);
    reader2.close();
    FileUtils.deleteDirectory(new File(path));
}
Also used : Field(org.apache.carbondata.core.metadata.datatype.Field) ColumnExpression(org.apache.carbondata.core.scan.expression.ColumnExpression) LiteralExpression(org.apache.carbondata.core.scan.expression.LiteralExpression) File(java.io.File) Test(org.junit.Test)

Example 63 with Field

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

the class CarbonIUDTest method testDeleteOnUpdatedRows.

@Test
public void testDeleteOnUpdatedRows() throws Exception {
    String path = "./testWriteFiles";
    FileUtils.deleteDirectory(new File(path));
    Field[] fields = new Field[3];
    fields[0] = new Field("name", DataTypes.STRING);
    fields[1] = new Field("age", DataTypes.INT);
    fields[2] = new Field("doubleField", DataTypes.DOUBLE);
    TestUtil.writeFilesAndVerify(20, new Schema(fields), path);
    Map<String, String> updateColumnToValue = new HashMap<>();
    updateColumnToValue.put("name", "robot");
    updateColumnToValue.put("age", "24");
    ColumnExpression columnExpression = new ColumnExpression("age", DataTypes.INT);
    LessThanExpression lessThanExpression = new LessThanExpression(columnExpression, new LiteralExpression("10", DataTypes.INT));
    CarbonIUD.getInstance().update(path, lessThanExpression, updateColumnToValue);
    CarbonIUD.getInstance().delete(path, "doubleField", "2.0").commit();
    ColumnExpression columnExpression1 = new ColumnExpression("age", DataTypes.INT);
    EqualToExpression equalToExpression = new EqualToExpression(columnExpression1, new LiteralExpression("24", DataTypes.INT));
    CarbonReader reader = CarbonReader.builder(path).projection(new String[] { "name", "age", "doubleField" }).filter(equalToExpression).build();
    int i = 0;
    while (reader.hasNext()) {
        Object[] row = (Object[]) reader.readNextRow();
        assert (((String) row[0]).contains("robot"));
        assert (((int) (row[1])) == 24);
        i++;
    }
    Assert.assertEquals(i, 9);
    reader.close();
    FileUtils.deleteDirectory(new File(path));
}
Also used : HashMap(java.util.HashMap) LiteralExpression(org.apache.carbondata.core.scan.expression.LiteralExpression) Field(org.apache.carbondata.core.metadata.datatype.Field) ColumnExpression(org.apache.carbondata.core.scan.expression.ColumnExpression) File(java.io.File) Test(org.junit.Test)

Example 64 with Field

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

the class CarbonIUDTest method testDelete.

@Test
public void testDelete() throws Exception {
    String path = "./testWriteFiles";
    FileUtils.deleteDirectory(new File(path));
    Field[] fields = new Field[3];
    fields[0] = new Field("name", DataTypes.STRING);
    fields[1] = new Field("age", DataTypes.INT);
    fields[2] = new Field("doubleField", DataTypes.DOUBLE);
    TestUtil.writeFilesAndVerify(10, new Schema(fields), path);
    CarbonIUD.getInstance().delete(path, "age", "0").commit();
    CarbonIUD.getInstance().delete(path, "age", "1").delete(path, "name", "robot1").commit();
    CarbonIUD.getInstance().delete(path, "age", "2").delete(path, "name", "robot2").delete(path, "doubleField", "1.0").commit();
    CarbonIUD.getInstance().delete(path, "name", "robot3").delete(path, "name", "robot4").delete(path, "name", "robot5").commit();
    CarbonIUD.getInstance().delete(path, "name", "robot6").delete(path, "name", "robot7").delete(path, "name", "robot8").delete(path, "age", "6").delete(path, "age", "7").commit();
    CarbonReader reader = CarbonReader.builder(path).projection(new String[] { "name", "age", "doubleField" }).build();
    int i = 0;
    while (reader.hasNext()) {
        Object[] row = (Object[]) reader.readNextRow();
        assert (((String) row[0]).contains("robot8") || ((String) row[0]).contains("robot9"));
        assert (((int) (row[1])) > 7);
        assert ((double) row[2] > 3.5);
        i++;
    }
    Assert.assertEquals(i, 2);
    reader.close();
    FileUtils.deleteDirectory(new File(path));
}
Also used : Field(org.apache.carbondata.core.metadata.datatype.Field) File(java.io.File) Test(org.junit.Test)

Example 65 with Field

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

the class CarbonIUDTest method testUpdateOnDateType.

@Test
public void testUpdateOnDateType() throws Exception {
    String path = "./testWriteFiles";
    CarbonProperties.getInstance().addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT).addProperty(CarbonCommonConstants.CARBON_DATE_FORMAT, CarbonCommonConstants.CARBON_DATE_DEFAULT_FORMAT);
    FileUtils.deleteDirectory(new File(path));
    Field[] fields = new Field[3];
    fields[0] = new Field("intField", DataTypes.INT);
    fields[1] = new Field("dateField", DataTypes.DATE);
    fields[2] = new Field("timeField", DataTypes.TIMESTAMP);
    CarbonWriter writer = CarbonWriter.builder().outputPath(path).withCsvInput(new Schema(fields)).writtenBy("IUDTest").build();
    for (int i = 0; i < 10; i++) {
        String[] row2 = new String[] { String.valueOf(i % 10000), "2019-03-02", "2019-02-12 03:03:34" };
        writer.write(row2);
    }
    writer.close();
    CarbonIUD.getInstance().update(path, "intField", "0", "intField", "20").commit();
    CarbonReader reader = CarbonReader.builder(path).projection(new String[] { "intField", "dateField", "timeField" }).build();
    int i = 0;
    while (reader.hasNext()) {
        Object[] row = (Object[]) reader.readNextRow();
        assert ((int) row[0] != 0);
        assert (row[1].equals("2019-03-02"));
        assert (row[2].equals("2019-02-12 03:03:34"));
        i++;
    }
    Assert.assertEquals(i, 10);
    reader.close();
    FileUtils.deleteDirectory(new File(path));
}
Also used : Field(org.apache.carbondata.core.metadata.datatype.Field) File(java.io.File) Test(org.junit.Test)

Aggregations

Field (org.apache.carbondata.core.metadata.datatype.Field)140 File (java.io.File)111 Test (org.junit.Test)111 StructField (org.apache.carbondata.core.metadata.datatype.StructField)104 IOException (java.io.IOException)55 InvalidLoadOptionException (org.apache.carbondata.common.exceptions.sql.InvalidLoadOptionException)39 ColumnSchema (org.apache.carbondata.core.metadata.schema.table.column.ColumnSchema)27 HashMap (java.util.HashMap)26 ArrayList (java.util.ArrayList)23 CarbonFile (org.apache.carbondata.core.datastore.filesystem.CarbonFile)22 ColumnExpression (org.apache.carbondata.core.scan.expression.ColumnExpression)21 LiteralExpression (org.apache.carbondata.core.scan.expression.LiteralExpression)21 EqualToExpression (org.apache.carbondata.core.scan.expression.conditional.EqualToExpression)13 Map (java.util.Map)12 FilenameFilter (java.io.FilenameFilter)11 FilterUtil.prepareEqualToExpression (org.apache.carbondata.core.scan.filter.FilterUtil.prepareEqualToExpression)10 BufferedInputStream (java.io.BufferedInputStream)9 FileInputStream (java.io.FileInputStream)9 AndExpression (org.apache.carbondata.core.scan.expression.logical.AndExpression)9 FileFilter (java.io.FileFilter)6