При применении fuzzywazzy к RDD и широковещательной переменной требуется вечное выполнение только для входных записей 3K на 6K - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь найти нечеткое совпадение между двумя наборами названий организаций.Один набор будет предоставлен пользователем (мой ввод), а другой набор я должен получить из своей базы данных, а затем проверить, хорошо ли совпадает какое-либо из предоставленных пользователем имен с хранилищем имен в моей системе.

input size = 8 / 9K записей записей из моей базы данных = 10 миллионов

Я читаю данные, поступающие со стороны пользователя, в широковещательную переменную и считываю данные из моей базы данных в RDD.затем применяя fuzzywazzy для каждой записи RDD со всеми переменными широковещания (означает, что все данные предоставлены пользователем)

def fuzzySearch (line):
    global result
    for i in range (0,c):
            score_x = fuzz.token_sort_ratio(line, broadcast_rdd.value[i])
            if score_x > 61:
                result.append((line, score_x, broadcast_rdd.value[i]))

    return result

result = []
c = user_provided_data_rdd.count()
res = data_fetched_from_database_rdd.map(fuzzySearch)
res.collect()

Но это занимает почти 2 часа только для записей 3k на 6k (в то время кактестирование).

Я не уверен, что происходит не так, что я могу изменить, чтобы получить быстрый результат.

Обратите внимание: я очень новичок в спарке, поэтому есть большие шансычто концептуально я ошибаюсь, чтобы использовать RDD и / или широковещательную переменную внутри цикла. Пожалуйста, исправьте меня, если так.

Благодарим за любую помощь.С наилучшими пожеланиями!

...