LuciferYang opened a new pull request, #38811: URL: https://github.com/apache/spark/pull/38811
### What changes were proposed in this pull request? There are two main ways to construct `StructType`: - Primary constructor ```scala case class StructType(fields: Array[StructField]) ``` - Use `Seq` as input constructor ```scala def apply(fields: Seq[StructField]): StructType = StructType(fields.toArray) ``` These two construction methods are widely used in Spark, but the latter requires an additional collection conversion. This pr changes the following 3 scenarios to use primary constructor to reduce one collection conversion: 1. For manually create `Seq` input scenes, change to use manually create `Array` input instead, for examaple: https://github.com/apache/spark/blob/bcf03fe3f86a7230fd977c059b73a58554370d5d/mllib/src/main/scala/org/apache/spark/ml/image/ImageSchema.scala#L55-L63 2. For the scenario where 'toSeq' is added to create input for compatibility with Scala 2.13, directly call 'toArray' to instead, for example: https://github.com/apache/spark/blob/bcf03fe3f86a7230fd977c059b73a58554370d5d/connector/avro/src/main/scala/org/apache/spark/sql/avro/SchemaConverters.scala#L108-L113 3. For scenes whose input is originally `Array`, remove the redundant `toSeq`, for example: https://github.com/apache/spark/blob/bcf03fe3f86a7230fd977c059b73a58554370d5d/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala#L587-L592 All changes involved are local variables, and the input array will not escape and be accidentally change, so it is safe. ### Why are the changes needed? Reduce unnecessary collection conversion. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? - Pass GitHub Actions -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
