diff --git a/extensions-core/avro-extensions/src/main/java/io/druid/data/input/avro/GenericAvroJsonProvider.java b/extensions-core/avro-extensions/src/main/java/io/druid/data/input/avro/GenericAvroJsonProvider.java index db21a7a4935a..f0656a9ba2c4 100644 --- a/extensions-core/avro-extensions/src/main/java/io/druid/data/input/avro/GenericAvroJsonProvider.java +++ b/extensions-core/avro-extensions/src/main/java/io/druid/data/input/avro/GenericAvroJsonProvider.java @@ -23,6 +23,7 @@ import com.jayway.jsonpath.spi.json.JsonProvider; import org.apache.avro.Schema; import org.apache.avro.generic.GenericRecord; +import org.apache.avro.util.Utf8; import java.io.InputStream; import java.util.ArrayList; @@ -135,13 +136,20 @@ public void setArrayIndex(final Object o, final int i, final Object o1) } } + private Object transformAvroMapKey(String keyToTransform, Map avroMapObj) { + Object key = avroMapObj.keySet().iterator().next(); + if (key instanceof Utf8) { + return new Utf8(keyToTransform); + } + return keyToTransform; + } @Override public Object getMapValue(final Object o, final String s) { if (o instanceof GenericRecord) { return ((GenericRecord) o).get(s); } else if (o instanceof Map) { - return ((Map) o).get(s); + return ((Map) o).get(transformAvroMapKey(s,(Map) o)); } else { throw new UnsupportedOperationException(o.getClass().getName()); }