Чтобы заменить столбец ArrayType col1
его первым элементом, explode
не будет полезным. Вы можете просто заменить его на $"col1"(0)
(или $"col1".getItem(0)
), как показано ниже:
import spark.implicits._
import org.apache.spark.sql.functions._
val df = Seq(
Seq("elem1", "elem2"),
Seq("elem3", "elem4")
).toDF("col1")
df.withColumn("col1", $"col1"(0)).show
// +-----+
// | col1|
// +-----+
// |elem1|
// |elem3|
// +-----+
Обратите внимание, что у вас может быть отдельная проблема с обнаруженной NoSuchElementException
, так как explode
, при которой столбец ArrayType обычно не генерирует такое исключение.