Модули Python для доставки в pyspark для других узлов

Как я могу отправить C скомпилированные модули (например, python-Levenshtein) на каждый узел в Spark- кластере?

Я знаю, что я могу отправлять файлы Python в Spark с помощью автономного скрипта Python (пример кода ниже):

from pyspark import SparkContext
sc = SparkContext("local", "App Name", pyFiles=['MyFile.py', 'MyOtherFile.py'])

Но в ситуациях, когда нет ".py", как я могу отправить модуль?

Ответы

Ответ 1

Если вы можете упаковать свой модуль в файл .egg или .zip, вы должны указать его в pyFiles при построении SparkContext (или вы можете добавить его позже через sc.addPyFile).

Для библиотек Python, которые используют setuptools, вы можете запустить python setup.py bdist_egg, чтобы построить распределение яйца.

Другой вариант - установить библиотеку в масштабе всего кластера либо с помощью pip/easy_install на каждом компьютере, либо путем совместного использования Python по файловой системе с кластерной файловой системой (например, NFS).

Ответ 2

Здесь есть два основных варианта:

Люди также предлагают использовать python shell для проверки наличия модуля в кластере.