Ho un frame di dati Spark in cui una colonna è una matrice di numeri interi. La colonna è nullable perché proviene da un join esterno sinistro. Voglio convertire tutti i valori null in una matrice vuota, quindi non devo occuparmi di null in seguito.Converti i valori nulli nell'array vuoto in Spark DataFrame
Pensavo di poter fare in questo modo:
val myCol = df("myCol")
df.withColumn("myCol", when(myCol.isNull, Array[Int]()).otherwise(myCol))
Tuttavia, questo si traduce nella seguente eccezione:
java.lang.RuntimeException: Unsupported literal type class [I [[email protected]
at org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:49)
at org.apache.spark.sql.functions$.lit(functions.scala:89)
at org.apache.spark.sql.functions$.when(functions.scala:778)
Apparentemente tipi di matrice non sono supportati dalla funzione when
. C'è un altro modo semplice per convertire i valori nulli?
Nel caso in cui è rilevante, qui è lo schema per questa colonna:
|-- myCol: array (nullable = true)
| |-- element: integer (containsNull = false)
Dai un'occhiata alla funzione coalesce sql https://docs.oracle.com/database/121/SQLRF/functions033.htm#SQLRF00617 – gasparms