У меня есть:
+-----------------------+-------+------------------------------------+
|cities |name |schools |
+-----------------------+-------+------------------------------------+
|[palo alto, menlo park]|Michael|[[stanford, 2010], [berkeley, 2012]]|
|[santa cruz] |Andy |[[ucsb, 2011]] |
|[portland] |Justin |[[berkeley, 2014]] |
+-----------------------+-------+------------------------------------+
Я не потею:
val res = df.select ("*").where (array_contains (df("schools.sname"), "berkeley")).show(false)
Но без желания взорваться или использовать UDF, я так же или аналогично, как указано выше,Как я могу сделать что-то вроде:
return all rows where at least 1 schools.sname starts with "b" ?
Например:
val res = df.select ("*").where (startsWith (df("schools.sname"), "b")).show(false)
Это, конечно, неправильно, просто чтобы продемонстрировать точку.Но как я могу сделать что-то подобное без взрыва или использования UDF, возвращающего true / false или чего-либо еще и фильтрации вообще без использования UDF?Может быть, это невозможно.Я не могу найти таких примеров.Или это expr Мне нужно?
Получены ответы, которые показывают, как определенные вещи имеют определенный подход, поскольку некоторые возможности не существуют в SCALA.Я прочитал статью, в которой говорится о новых возможностях массива, которые будут реализованы после этого, и это доказывает правильность.