Задать c слово фильтра в PySpark - PullRequest
1 голос
/ 25 апреля 2020

Я довольно новичок в PySpark, поэтому извините, если мой вопрос кажется слишком простым, но я застрял в нем некоторое время.

Учитывая, что следующий текст распараллелен

Алиса недавно была обеспокоена недавними событиями. Алиса обратила внимание на то, что ее оценки снижались, что очень беспокоило Алису. Если бы родители Алисы узнали об этом, они бы бросили. Что должна сделать Алиса?

Я знаю, что для поиска частоты слова «Алиса» используется код

rdd.filter(lambda x: "Alice" in x).count()

, равный 5. Однако как мне исключите те, которые являются «Алисой» и просто получите количество слов «Алисы», поэтому мой желаемый счет должен быть 3 вместо 5.

1 Ответ

2 голосов
/ 25 апреля 2020

Вы можете фильтровать только Алису, используя .filter(lambda x:x[0]=='Alice')

from operator import add
rdd.collect()
#["Alice has recently been troubled by recent events. It has come to Alice's attention that her grades were dipping down which worried Alice a lot. If Alice's parents were to find out about this, they would flip out. What should Alice do?"]

#filter only Alice
rdd.flatMap(lambda x:x.split(" ")).map(lambda x:(x,1)).reduceByKey(add).filter(lambda x:x[0]=='Alice').collect()  
#[('Alice', 3)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...