diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java index 686fc76..205499e 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java @@ -23,6 +23,8 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyMapObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; import org.apache.hadoop.io.Text; @@ -36,6 +38,7 @@ */ public class LazyMap extends LazyNonPrimitive { + public static final Log LOG = LogFactory.getLog(LazyMap.class); /** * Whether the data is already parsed or not. */ @@ -170,6 +173,15 @@ private void parse() { valueLength[mapSize] = elementByteEnd - (keyEnd[mapSize] + 1); LazyPrimitive lazyKey = uncheckedGetKey(mapSize); if (lazyKey == null) { + LOG.warn("skipped empty entry or entry with empty key in the representation of column with MAP type."); + + // reset keyValueSeparatorPosition + keyValueSeparatorPosition = -1; + elementByteBegin = elementByteEnd + 1; + elementByteEnd++; + + //reset keyInited[mapSize] flag, since it may be set to true in the case of previous empty entry + keyInited[mapSize] = false; continue; } Object key = lazyKey.getObject();