Mam ramkę danych Spark, w której jedna kolumna jest tablicą liczb całkowitych. Kolumna jest zerowalna, ponieważ pochodzi z lewego sprzężenia zewnętrznego. Chcę przekonwertować wszystkie wartości null do pustej tablicy, więc nie mam do czynienia z wartościami null później.Konwertuj wartości puste na pustą tablicę w Spark DataFrame
Myślałem, że mogę to zrobić tak:
val myCol = df("myCol")
df.withColumn("myCol", when(myCol.isNull, Array[Int]()).otherwise(myCol))
Powoduje to jednak w następującym wyjątkiem:
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)
Widocznie typy tablicy nie są obsługiwane przez funkcję when
. Czy istnieje inny łatwy sposób na konwersję wartości pustych?
W przypadku istotne jest, tutaj jest schemat dla tej kolumny:
|-- myCol: array (nullable = true)
| |-- element: integer (containsNull = false)
Spójrz na funkcję koalesce sql https://docs.oracle.com/database/121/SQLRF/functions033.htm#SQLRF00617 – gasparms