web-dev-qa-db-fra.com

Envoi de modules Python dans pyspark vers d'autres nœuds

Comment puis-je envoyer des modules C compilés (par exemple, python-Levenshtein) à chaque nœud d'un cluster Spark ?

Je sais que je peux livrer des fichiers Python dans Spark à l'aide d'un script Python autonome (exemple de code ci-dessous):

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

Mais dans les cas où il n’existe pas de «.py», comment puis-je expédier le module?

22
mgoldwasser

Si vous pouvez conditionner votre module dans un fichier .Egg ou .Zip, vous devriez pouvoir le lister dans pyFiles lors de la construction de votre SparkContext (ou vous pouvez l'ajouter ultérieurement via sc.addPyFile ).

Pour les bibliothèques Python qui utilisent setuptools, vous pouvez exécuter python setup.py bdist_Egg pour créer une distribution Egg.

Une autre option consiste à installer la bibliothèque au niveau du cluster, soit en utilisant pip/easy_install sur chaque ordinateur, soit en partageant une installation Python sur un système de fichiers au niveau du cluster (comme NFS).

36
Josh Rosen
0
ivan_pozdeev