Это не проблема pyspark, а проблема с python:
Вариант 1: разработать для этого базовую функцию.Идея состоит в том, что вы прекращаете поиск, как только доказано, что элемент listA не содержится в listB.
def containsAllOf(listA, listB):
for (e in listA):
if (!listB.contains(e)):
return false
return true
Также это решение можно записать так (это более элегантно, но первый вариантможет сказать вам раньше, если данный список НЕ содержится во втором).
def containsAllOf(listA, listB):
len([x for x in listA if x in listB]) == len(listA)
Вариант 2: использовать функции Pyton (теория множеств).Идея: если listA внутреннее соединение listB == listA, то все элементы listA наверняка содержатся в listB.
def containsAllOf(listA, listB):
length(list(set(listA) & set(listB))) == length(listA)
Я не уверен, какой вариант подойдет вам лучше всего, вам нужно проверить.Это зависит от размеров обоих ваших списков.Но первый вариант уже имеет вполне приличную алгоритмическую сложность O (n).Второй вариант немного сложнее предсказать, но он может быть O (n log (n)) в зависимости от основной сложности объединения двух наборов в Python.
Если это решит вашу проблему, не стесняйтесьподнять голос.