PySpark - фильтр RDD на основе другого RDD - широковещательный RDD - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть два RDD: содержание и удаление

Оба являются RDD с несколькими словами за строкой.То, что я хочу, это отфильтровать все слова в содержании, которые появляются в удалении RDD.Я пытаюсь с этим:

filter = contents.filter(lambda line: line[0] not in remove.collect()).collect()

Но это дает мне это:

Exception: It appears that you are attempting to broadcast an RDD or reference an RDD from an action or transformation. RDD transformations and actions can only be invoked by the driver, not inside of other transformations; for example, rdd1.map(lambda x: rdd2.values.count() * x) is invalid because the values transformation and count action cannot be performed inside of the rdd1.map transformation. For more information, see SPARK-5063.

Не могу сделать это с помощью фильтра и оператора Not In?

Спасибо!

1 Ответ

0 голосов
/ 08 декабря 2018

Кажется, я помню, что вы не можете транслировать СДР, он уже распространен.И вы докажете это.

Вам не нужно распараллеливать список удаления, вы можете или не можете транслировать его.Например,

rdd = sc.parallelize(range(10))
remove = [5,6]
broadcast = sc.broadcast(remove)
rdd.filter(lambda x: x not in broadcast.value).collect()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...