Scala искра: Эффективная проверка, соответствует ли условие где-нибудь? - PullRequest
2 голосов
/ 14 февраля 2020

То, что я хочу, примерно эквивалентно

df.where(<condition>).count() != 0

Но я почти уверен, что он не достаточно умен, чтобы остановиться, когда обнаружит любое такое нарушение. Я ожидаю, что какой-нибудь агрегатор сможет это сделать, но я не нашел такого? Я мог бы сделать это с max и каким-то преобразованием, но, опять же, я не думаю, что он обязательно узнает, что нужно выйти (не указав c для bool, я не уверен, понимает ли, что значение не больше, чем true).

Более конкретно, я хочу проверить, содержит ли столбец только один элемент. Сейчас моя лучшая идея - сделать это, взяв первое значение и сравнив все.

1 Ответ

1 голос
/ 14 февраля 2020

Я бы попробовал эту опцию, она должна быть намного быстрее:

df.where(<condition>).head(1).isEmpty

Вы также можете попытаться определить свои условия в строке вместе с scala 'exists (который останавливается на первое появление true):

df.mapPartitions(rows => if(rows.exists(row => <condition>)) Iterator(1) else Iterator.empty).isEmpty

В конце вы должны сравнить альтернативы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...