Требуется разъяснение относительно массива spark scala ()

#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#size

2. À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|
 --- ----- 
 --- -----