diff --git a/external/avro/src/main/scala/org/apache/spark/sql/avro/AvroDeserializer.scala b/external/avro/src/main/scala/org/apache/spark/sql/avro/AvroDeserializer.scala index 50db6348923c..2c17c16f06da 100644 --- a/external/avro/src/main/scala/org/apache/spark/sql/avro/AvroDeserializer.scala +++ b/external/avro/src/main/scala/org/apache/spark/sql/avro/AvroDeserializer.scala @@ -167,13 +167,14 @@ class AvroDeserializer(rootAvroType: Schema, rootCatalystType: DataType) { case (ARRAY, ArrayType(elementType, containsNull)) => val elementWriter = newWriter(avroType.getElementType, elementType, path) (updater, ordinal, value) => - val array = value.asInstanceOf[java.util.Collection[Any]] - val len = array.size() - val result = createArrayData(elementType, len) + val collection = value.asInstanceOf[java.util.Collection[Any]] + val result = createArrayData(elementType, collection.size()) val elementUpdater = new ArrayDataUpdater(result) var i = 0 - for (element <- array.asScala) { + val iter = collection.iterator() + while (iter.hasNext) { + val element = iter.next() if (element == null) { if (!containsNull) { throw new RuntimeException(s"Array value at path ${path.mkString(".")} is not " +