У меня есть пакет данных Spark, где один столбец представляет собой массив целых чисел. Столбец является нулевым, потому что он исходит из левого внешнего соединения. Я хочу преобразовать все пустые значения в пустой массив, поэтому мне больше не придется иметь дело с нулями.
Я думал, что смогу сделать это так:
val myCol = df("myCol")
df.withColumn( "myCol", when(myCol.isNull, Array[Int]()).otherwise(myCol) )
Однако это приводит к следующему исключению:
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)
По-видимому, типы массивов не поддерживаются функцией when
. Есть ли другой простой способ преобразования нулевых значений?
В случае, если это имеет значение, вот схема для этого столбца:
|-- myCol: array (nullable = true)
| |-- element: integer (containsNull = false)