2014-11-04 11 views
7

Se start up pyspark e quindi eseguire il seguente comando:Qual è la differenza tra spark-submit e pyspark?

import my_script; spark = my_script.Sparker(sc); spark.collapse('./data/') 

Tutto è A-OK. Se, invece, cerco di fare la stessa cosa attraverso la riga di comando e scintilla-presentare, ottengo un errore:

Command: /usr/local/spark/bin/spark-submit my_script.py collapse ./data/ 
    File "/usr/local/spark/python/pyspark/rdd.py", line 352, in func 
    return f(iterator) 
    File "/usr/local/spark/python/pyspark/rdd.py", line 1576, in combineLocally 
    merger.mergeValues(iterator) 
    File "/usr/local/spark/python/pyspark/shuffle.py", line 245, in mergeValues 
    for k, v in iterator: 
    File "/.../my_script.py", line 173, in _json_args_to_arr 
    js = cls._json(line) 
RuntimeError: uninitialized staticmethod object 

mio_script:

... 
if __name__ == "__main__": 
    args = sys.argv[1:] 
    if args[0] == 'collapse': 
     directory = args[1] 
     from pyspark import SparkContext 
     sc = SparkContext(appName="Collapse") 
     spark = Sparker(sc) 
     spark.collapse(directory) 
     sc.stop() 

Perché succede questo? Qual è la differenza tra l'esecuzione di pyspark e l'esecuzione di una scintilla che causerebbe questa divergenza? E come posso fare questo lavoro in spark-submit?

EDIT: Ho provato a farlo dalla shell bash facendo pyspark my_script.py collapse ./data/ e ho ottenuto lo stesso errore. L'unica volta in cui tutto funziona è quando sono in una shell python e importa lo script.

risposta

2

pyspark-submit invia il codice ai lavoratori in un cluster da eseguire.

controllo: http://spark.apache.org/docs/latest/submitting-applications.html

+3

intendevi spark-submit non pyspark-submit. Inoltre, questo spiega cosa fa lo spark-submit, ma non era questa la domanda. La domanda riguardava la differenza tra spark-submit e pyspark. La risposta di avrsanjay era una risposta. –

+1

Non esiste una cosa come pyspark-submit –

7
  1. Se hai costruito un'applicazione scintilla, è necessario utilizzare scintilla presentare per eseguire l'applicazione

    • Il codice può essere scritto sia in python/scala

    • La modalità può essere locale/cluster

  2. Se si desidera solo per testare/run pochi singoli comandi, è possibile utilizzare il shell fornito da scintilla

    • pyspark (scintilla in python)
    • scintilla della shell (per scintilla in scala)
+0

pyspark supporta solo la modalità cluster con distribuzione di filati. Mesos e standalone non supportano la modalità cluster. –

+0

[pyspark] (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) la documentazione dice che supporta anche standalone. Per favore, correggi se mi manca qualcosa qui. – avrsanjay

+0

pyspark supporta stand alone nella cosiddetta "modalità locale" che significa che il driver viene eseguito sulla macchina che inoltra il lavoro. Solo Yarn supporta la modalità cluster per pyspark in modo sfortunato. –

Problemi correlati