Tôi có khung dữ liệu Spark trong đó một cột là một mảng các số nguyên. Cột là nullable vì nó đến từ một bên ngoài tham gia bên ngoài. Tôi muốn chuyển đổi tất cả các giá trị null vào một mảng trống vì vậy tôi không phải đối phó với nulls sau này.Chuyển đổi giá trị null thành mảng trống trong Spark DataFrame
Tôi nghĩ tôi có thể làm điều đó như vậy:
val myCol = df("myCol")
df.withColumn("myCol", when(myCol.isNull, Array[Int]()).otherwise(myCol))
Tuy nhiên, điều này dẫn đến ngoại lệ sau đây:
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)
Rõ ràng loại mảng không được hỗ trợ bởi các when
chức năng. Có cách nào khác dễ dàng để chuyển đổi các giá trị null?
Trong trường hợp đó là có liên quan, đây là lược đồ cho cột này:
|-- myCol: array (nullable = true)
| |-- element: integer (containsNull = false)
Hãy xem hàm sql coalesce https://docs.oracle.com/database/121/SQLRF/functions033.htm#SQLRF00617 – gasparms