Я пытаюсь измерить сходство предложений, используя word2vec для предложений между двумя документами. Для повышения производительности я пытаюсь запустить код с помощью pyspark. Я использую RDD.map () и toLocalIterator () вместо collect (). Я сталкиваюсь с несколькими ошибками каждый раз, когда пытаюсь запустить код.
Версии Python и PySpark приведены ниже:
** Python версия: 3.6.7 и **
** Pyspark версия: 2.4.3 **
Это мой фрагмент кода:
rdd1 = sc.parallelize(range(len(df)), 5).map(lambda x: process(x, df2))
print('rdd')
mapping1 = rdd1.toLocalIterator()
** df - ** Это список предложений из первого документа, который я пытаюсь разделить на 5 разделов.
** процесс - ** Он принимает 2 аргумента, предложение формирует первый документ, а список предложений формирует второй документ. Это функция подобия предложения, которая использует предварительно обученную модель word2vec для вычисления оценок сходства предложений между каждым предложением, формирующим первый документ для все предложения во втором документе.
В консоли после выполнения оператора print. процесс длится несколько минут, и я сталкиваюсь со следующими ошибками.
Произошедшие ошибки:
ОШИБКА server.TransportRequestHandler: Ошибка при вызове RpcHandler # receive () для одностороннего сообщения. org.apache.spark.SparkException: не удалось найти AppClient.
- Не в состоянии понять, что может быть причиной этой ошибки
CoarseGrainedExecutorBackend: драйвер дал команду на отключение
- Для вышеупомянутой проблемы я попытался отрегулировать память драйвера, но ошибка все еще сохраняется.
_pickle.PicklingError: Не удалось сериализовать объект: MemoryError:
- Для вышеуказанной ошибки я изменил сериализатор по умолчанию в spark на BatchedSerializer
Но все же я не могу успешно выполнить свой код, каждый раз после инициализации map () исполнитель останавливается на 'rdd.toLocalIterator ()', выдавая следующее сообщение.
«ИНФОРМАЦИЯ SparkContext: вызов stop () из ловушки отключения», и когда я проверяю логи, я вижу это.
«INFO CoarseGrainedExecutorBackend: драйвер дал команду на отключение»
Я что-то упустил? Есть ли возможное решение для преодоления этих ошибок?
Спасибо.