Модули 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
для проверки наличия модуля в кластере.