#scala #apache-spark #apache-spark-sql #scala-collections #nothing
#scala #apache-spark #apache-spark-sql #scala-коллекции #ничего
Вопрос:
Скажем, у меня есть фрейм данных. Некоторые из значений столбцов в этом фрейме данных являются Array(), т.Е. Array [Ничего] . Как я могу их отфильтровать? потому что, если я этого не сделаю, это выдаст ошибку, если кто-то попытается распечатать фрейм данных или около того.
Комментарии:
1. вы также можете использовать
size
функцию, например:df.where("size(ar) > 0")
. Больше информации здесь spark.apache.org/docs/latest/api/sql/index.html#size2.
Àrray[Nothing]
не может быть типом столбца (обратите внимание, чтоǸothing
это фактический тип в scala)3. пустой массив не должен выдавать ошибку в Spark Scala, пожалуйста, уточните
Ответ №1:
Просто отфильтруйте пустой массив.
val df1 = df.withColumn("array", array())
df1.show()
--- -----
| id|array|
--- -----
| 1| []|
--- -----
val df2 = df1.filter("array != array()")
df2.show()
--- -----
| id|array|
--- -----
--- -----