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]

Reply via email to