Enviando módulos Python en pyspark a otros nodos

¿Cómo puedo enviar módulos comstackdos en C (por ejemplo, python-Levenshtein) a cada nodo en un clúster Spark ?

Sé que puedo enviar archivos de Python en Spark usando un script de Python independiente (código de ejemplo a continuación):

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

Pero en situaciones donde no hay ‘.py’, ¿cómo envío el módulo?

Related of "Enviando módulos Python en pyspark a otros nodos"

Si puede empaquetar su módulo en un archivo .egg o .zip , debería poder pyFiles en pyFiles cuando construya su SparkContext (o puede agregarlo más adelante a través de sc.addPyFile ).

Para las bibliotecas de Python que usan setuptools, puede ejecutar python setup.py bdist_egg para construir una distribución de huevo.

Otra opción es instalar la biblioteca en todo el clúster, ya sea usando pip / easy_install en cada máquina o compartiendo una instalación de Python en un sistema de archivos de todo el clúster (como NFS).

Hay dos opciones principales aquí:

  • Si se trata de un solo archivo o un .zip / .egg , páselo a SparkContext.addPyFile .
  • Inserte pip install en un código de arranque para las máquinas del clúster .
    • Algunas plataformas en la nube (DataBricks en este caso) tienen IU para hacer esto más fácil .

La gente también sugiere usar el python shell para probar si el módulo está presente en el clúster .