2014-11-04 14 views
7

Nếu tôi bắt đầu lên pyspark và sau đó chạy lệnh này:Sự khác nhau giữa tia lửa gửi và pyspark là gì?

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

Tất cả mọi thứ là A-ok. Tuy nhiên, nếu tôi cố gắng làm điều tương tự thông qua các dòng lệnh và châm ngòi cho đăng, tôi nhận được một lỗi:

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

Tại sao điều này xảy ra? Sự khác biệt giữa chạy pyspark và chạy spark-submit sẽ gây ra sự khác biệt này là gì? Và làm cách nào tôi có thể thực hiện công việc này trong việc gửi phản hồi?

EDIT: Tôi đã thử chạy ứng dụng này từ bash shell bằng cách thực hiện pyspark my_script.py collapse ./data/ và tôi gặp lỗi tương tự. Thời gian duy nhất khi mọi thứ hoạt động là khi tôi đang ở trong một trình bao python và nhập khẩu tập lệnh.

Trả lời

2

pyspark-submit gửi mã của bạn cho người lao động trong một cụm để thực thi.

kiểm tra: http://spark.apache.org/docs/latest/submitting-applications.html

+3

có nghĩa là bạn không cần phải gửi pyspark-submit. Ngoài ra, điều này giải thích những gì spark-gửi làm, nhưng đó không phải là câu hỏi. Câu hỏi đặt ra là sự khác biệt giữa tia lửa gửi và pyspark. Câu trả lời của avrsanjay là một câu trả lời. –

+1

Không có điều gì như pyspark-submit –

7
  1. Nếu bạn xây dựng một ứng dụng tia lửa, bạn cần phải sử dụng spark-nộp để chạy các ứng dụng

    • Mã này có thể được viết hoặc trong python/scala

    • Chế độ có thể là cục bộ/cụm

  2. Nếu bạn chỉ muốn thử nghiệm/chạy vài lệnh riêng lẻ, bạn có thể sử dụng vỏ cung cấp bởi tia lửa

    • pyspark (đối với tia lửa trong python)
    • spark-shell (ví spark in scala)
+0

pyspark chỉ hỗ trợ chế độ cụm với triển khai Sợi. Mesos và standalone không hỗ trợ chế độ cluster. –

+0

[pyspark] (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) tài liệu nói rằng nó hỗ trợ độc lập quá. Vui lòng sửa nếu tôi thiếu gì đó ở đây. – avrsanjay

+0

pyspark hỗ trợ độc lập trong cái gọi là "chế độ cục bộ" có nghĩa là trình điều khiển chạy trên máy gửi công việc. Only Yarn hỗ trợ chế độ cluster cho pyspark không may. –

Các vấn đề liên quan