Search in sources :

Example 1 with Parser

use of org.apache.druid.java.util.common.parsers.Parser in project druid by druid-io.

the class JSONLowercaseParseSpecTest method testLowercasing.

@Test
public void testLowercasing() {
    JSONLowercaseParseSpec spec = new JSONLowercaseParseSpec(new TimestampSpec("timestamp", "auto", null), new DimensionsSpec(DimensionsSpec.getDefaultSchemas(Arrays.asList("A", "B"))));
    Parser parser = spec.makeParser();
    Map<String, Object> event = parser.parseToMap("{\"timestamp\":\"2015-01-01\",\"A\":\"foo\"}");
    Assert.assertEquals("foo", event.get("a"));
}
Also used : Parser(org.apache.druid.java.util.common.parsers.Parser) Test(org.junit.Test)

Example 2 with Parser

use of org.apache.druid.java.util.common.parsers.Parser in project druid by druid-io.

the class FlattenJSONBenchmarkUtilTest method testOne.

@Test
public void testOne() throws Exception {
    FlattenJSONBenchmarkUtil eventGen = new FlattenJSONBenchmarkUtil();
    String newEvent = eventGen.generateFlatEvent();
    String newEvent2 = eventGen.generateNestedEvent();
    Parser flatParser = eventGen.getFlatParser();
    Parser nestedParser = eventGen.getNestedParser();
    Parser jqParser = eventGen.getJqParser();
    Map<String, Object> event = flatParser.parseToMap(newEvent);
    Map<String, Object> event2 = nestedParser.parseToMap(newEvent2);
    // reuse the same event as "nested"
    Map<String, Object> event3 = jqParser.parseToMap(newEvent2);
    checkEvent1(event);
    checkEvent2(event2);
    // make sure JQ parser output matches with JSONPath parser output
    checkEvent2(event3);
}
Also used : Parser(org.apache.druid.java.util.common.parsers.Parser) Test(org.junit.Test)

Example 3 with Parser

use of org.apache.druid.java.util.common.parsers.Parser in project druid by druid-io.

the class ProtobufInputRowParser method parseBatch.

@Override
public List<InputRow> parseBatch(ByteBuffer input) {
    if (parser == null) {
        parser = parseSpec.makeParser();
    }
    Map<String, Object> record;
    DateTime timestamp;
    if (isFlatSpec) {
        try {
            DynamicMessage message = protobufBytesDecoder.parse(input);
            record = CollectionUtils.mapKeys(message.getAllFields(), k -> k.getJsonName());
            timestamp = this.timestampSpec.extractTimestamp(record);
        } catch (Exception ex) {
            throw new ParseException(null, ex, "Protobuf message could not be parsed");
        }
    } else {
        try {
            DynamicMessage message = protobufBytesDecoder.parse(input);
            String json = JsonFormat.printer().print(message);
            record = parser.parseToMap(json);
            timestamp = this.timestampSpec.extractTimestamp(record);
        } catch (InvalidProtocolBufferException e) {
            throw new ParseException(null, e, "Protobuf message could not be parsed");
        }
    }
    final List<String> dimensions;
    if (!this.dimensions.isEmpty()) {
        dimensions = this.dimensions;
    } else {
        dimensions = Lists.newArrayList(Sets.difference(record.keySet(), parseSpec.getDimensionsSpec().getDimensionExclusions()));
    }
    return ImmutableList.of(new MapBasedInputRow(timestamp, dimensions, record));
}
Also used : ParseSpec(org.apache.druid.data.input.impl.ParseSpec) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) ByteBufferInputRowParser(org.apache.druid.data.input.ByteBufferInputRowParser) DynamicMessage(com.google.protobuf.DynamicMessage) Parser(org.apache.druid.java.util.common.parsers.Parser) ParseException(org.apache.druid.java.util.common.parsers.ParseException) DateTime(org.joda.time.DateTime) MapBasedInputRow(org.apache.druid.data.input.MapBasedInputRow) JSONParseSpec(org.apache.druid.data.input.impl.JSONParseSpec) CollectionUtils(org.apache.druid.utils.CollectionUtils) TimestampSpec(org.apache.druid.data.input.impl.TimestampSpec) Sets(com.google.common.collect.Sets) ByteBuffer(java.nio.ByteBuffer) InputRow(org.apache.druid.data.input.InputRow) List(java.util.List) Lists(com.google.common.collect.Lists) ImmutableList(com.google.common.collect.ImmutableList) JsonFormat(com.google.protobuf.util.JsonFormat) Map(java.util.Map) JsonCreator(com.fasterxml.jackson.annotation.JsonCreator) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) DynamicMessage(com.google.protobuf.DynamicMessage) ParseException(org.apache.druid.java.util.common.parsers.ParseException) MapBasedInputRow(org.apache.druid.data.input.MapBasedInputRow) DateTime(org.joda.time.DateTime) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) ParseException(org.apache.druid.java.util.common.parsers.ParseException)

Aggregations

Parser (org.apache.druid.java.util.common.parsers.Parser)3 Test (org.junit.Test)2 JsonCreator (com.fasterxml.jackson.annotation.JsonCreator)1 JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)1 ImmutableList (com.google.common.collect.ImmutableList)1 Lists (com.google.common.collect.Lists)1 Sets (com.google.common.collect.Sets)1 DynamicMessage (com.google.protobuf.DynamicMessage)1 InvalidProtocolBufferException (com.google.protobuf.InvalidProtocolBufferException)1 JsonFormat (com.google.protobuf.util.JsonFormat)1 ByteBuffer (java.nio.ByteBuffer)1 List (java.util.List)1 Map (java.util.Map)1 ByteBufferInputRowParser (org.apache.druid.data.input.ByteBufferInputRowParser)1 InputRow (org.apache.druid.data.input.InputRow)1 MapBasedInputRow (org.apache.druid.data.input.MapBasedInputRow)1 JSONParseSpec (org.apache.druid.data.input.impl.JSONParseSpec)1 ParseSpec (org.apache.druid.data.input.impl.ParseSpec)1 TimestampSpec (org.apache.druid.data.input.impl.TimestampSpec)1 ParseException (org.apache.druid.java.util.common.parsers.ParseException)1