¿Cómo pasar archivos al nodo maestro?

Ya escribí código en Python para implementar la clasificación binaria, y quiero paralelizar este proceso de clasificación basado en diferentes archivos de datos en mi computadora local usando Apache-Spark. Ya he hecho los siguientes pasos:

  1. He escrito todo el proyecto que contiene 4 archivos python: “run_classifer.py” (usado para ejecutar mi aplicación de clasificación), “classifer.py” (usado para la clasificación binaria), “load_params.py” (usado para cargar los parámetros de aprendizaje para clasificación) y “preprocessing.py” (utilizado para el procesamiento previo de datos). El proyecto también utiliza los archivos de dependencia: “tokenizer.perl” (usado en la parte de preproceso) y “nonbreaking_prefixes / nonbreaking_prefix.en” (también se usa en la parte de preproceso).

  2. La parte principal de mi archivo de script “run_classifer.py” se define como sigue,

    ### Initialize the Spark conf = SparkConf().setAppName("ruofan").setMaster("local") sc = SparkContext(conf = conf, pyFiles=['''All python files in my project as well as "nonbreaking_prefix.en" and "tokenizer.perl"''']) ### Read data directory from S3 storage, and create RDD datafile = sc.wholeTextFiles("s3n://bucket/data_dir") ### Sent the application on each of the slave node datafile.foreach(lambda (path, content): classifier(path, content)) 

Sin embargo, cuando ejecuto mi script “run_classifier.py”, parece que no puedo encontrar el archivo “nonbreaking_prefix.en”. El siguiente es el error que tengo:

ERROR: No se encontraron archivos abreviados en / tmp / spark-f035270e-e267-4d71-9bf1-8c42ca2097ee / userFiles-88093e1a-6096-4592-8a71-be5548a4f8ae / nonbreaking_prefixes

Pero en realidad pasé el archivo “nonbreaking_prefix.en” al nodo maestro, y no tengo ideas sobre el error. Realmente apreciaría si alguien me ayuda a solucionar el problema.

Puede cargar sus archivos utilizando sc.addFile y obtener una ruta de acceso en un trabajador utilizando SparkFiles.get :

 from pyspark import SparkFiles sc = (SparkContext(conf = conf, pyFiles=["All", "Python", "Files", "in", "your", "project"]) # Assuming both files are in your working directory sc.addFile("nonbreaking_prefix.en") sc.addFile("tokenizer.perl") def classifier(path, content): # Get path for uploaded files print SparkFiles.get("tokenizer.perl") with open(SparkFiles.get("nonbreaking_prefix.en")) as fr: lines = [line for line in fr]