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"));
}
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);
}
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));
}
Aggregations