2014-11-04 9 views
7

Jeśli zacznę się pyspark a następnie uruchomić polecenie:Jaka jest różnica między spark-submit i pyspark?

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

Wszystko jest OK. Jeśli jednak staram się robić to samo za pomocą poleceń i iskra-przedstawienia, pojawia się błąd:

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 

my_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() 

Dlaczego tak się dzieje? Jaka jest różnica między uruchamianiem pyspark a uruchamianiem iskierników, które mogłyby spowodować tę rozbieżność? I w jaki sposób mogę sprawić, by ta praca była w stanie iskrzenia?

EDYCJA: Próbowałem uruchomić to z powłoki bash, wykonując pyspark my_script.py collapse ./data/ i otrzymałem ten sam błąd. Jedyny czas, kiedy wszystko działa, to gdy znajduję się w powłoce Pythona i zaimportuję skrypt.

Odpowiedz

2

pyspark-submit wyślij kod do pracowników w klastrze, aby wykonać.

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

+3

miałeś na myśli wywołanie iskry, a nie pisspar. Ponadto wyjaśnia to, co robi spark-submit, ale to nie było pytanie. Pytanie dotyczyło różnicy między iskrzeniem i pyspark. Odpowiedź avrsanjaya była odpowiedzią. –

+1

Nie ma czegoś takiego jak pyspark-submit –

7
  1. Jeśli zbudowali aplikację zapłonową, trzeba użyć zapłonie złożyć aby uruchomić aplikację

    • Kod może być pisane w Pythonie/scala

    • Tryb może być lokalny/klaster

  2. Jeśli chcesz tylko przetestować/run kilka pojedynczych komend, można użyć skorupę dostarczone przez iskry

    • pyspark (iskry w python)
    • zapłonie skorupę (dla iskra w scala)
+0

Pyspark obsługuje tylko tryb klastra z wdrożeniem Przędzy. Mesos i standalone nie obsługuje trybu klastra. –

+0

[pyspark] (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) dokumentacja mówi, że obsługuje również samodzielne. Proszę poprawić, jeśli czegoś tu brakuje. – avrsanjay

+0

pyspark obsługuje samodzielnie w tak zwanym "trybie lokalnym", co oznacza, że ​​sterownik działa na maszynie, która przesyła zlecenie. Tylko Przędza obsługuje tryb klastrowy dla pyspark niefortunnie. –

Powiązane problemy