У меня есть фрейм данных с ключевым столбцом и столбцом, который имеет массив struct. Схема выглядит следующим образом.
root
|-- id: string (nullable = true)
|-- desc: array (nullable = false)
| |-- element: struct (containsNull = true)
| | |-- name: string (nullable = true)
| | |-- age: long (nullable = false)
Массив "desc" может иметь любое количество нулевых значений. Я хотел бы создать окончательный фрейм данных с массивом, не имеющим ни одного из нулевых значений, используя spark 1.6:
Примером может быть:
Key . Value
1010 . [[George,21],null,[MARIE,13],null]
1023 . [null,[Watson,11],[John,35],null,[Kyle,33]]
Я хочу получить окончательный кадр данных как:
Key . Value
1010 . [[George,21],[MARIE,13]]
1023 . [[Watson,11],[John,35],[Kyle,33]]
Я пытался сделать это с UDF и case-классом, но получил
java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast to....
Любая помощь очень ценится, и я предпочел бы делать это без преобразования в СДР, если это необходимо. Кроме того, я новичок в Spark и Scala, поэтому заранее спасибо !!!