Skip to content

Commit 62de678

Browse files
committed
[SPARK-29419] For thread-safety, copy encoder in SparkSession.createDataset(Seq)
1 parent 3b0bca4 commit 62de678

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

sql/core/src/main/scala/org/apache/spark/sql/SparkSession.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ class SparkSession private(
461461
* @since 2.0.0
462462
*/
463463
def createDataset[T : Encoder](data: Seq[T]): Dataset[T] = {
464-
val enc = encoderFor[T]
464+
// `ExpressionEncoder` is not thread-safe, here we create a new encoder.
465+
val enc = encoderFor[T].copy()
465466
val attributes = enc.schema.toAttributes
466467
val encoded = data.map(d => enc.toRow(d).copy())
467468
val plan = new LocalRelation(attributes, encoded)

0 commit comments

Comments
 (0)