Để thực thi Spark trong pyspark, hai thành phần bắt buộc phải hoạt động cùng nhau:
pyspark
gói trăn
- Phiên bản Spark trong JVM
Khi khởi chạy mọi thứ bằng spark-submit hoặc pyspark, các tập lệnh này sẽ đảm nhiệm cả hai, tức là chúng thiết lập PYTHONPATH, PATH, v.v. của bạn, để tập lệnh của bạn có thể tìm thấy pyspark và chúng cũng khởi động phiên bản spark, định cấu hình theo các thông số của bạn , ví dụ --master X
Ngoài ra, có thể bỏ qua các tập lệnh này và chạy ứng dụng spark của bạn trực tiếp trong trình thông dịch python như thế nào python myscript.py
. Điều này đặc biệt thú vị khi các tập lệnh spark bắt đầu trở nên phức tạp hơn và cuối cùng nhận được các args của riêng chúng.
- Đảm bảo rằng trình thông dịch Python có thể tìm thấy gói pyspark. Như đã thảo luận, hãy thêm spark / python dir vào PYTHONPATH hoặc cài đặt trực tiếp pyspark bằng cách sử dụng pip install.
- Đặt các tham số của phiên bản spark từ tập lệnh của bạn (những tham số đã từng được chuyển cho pyspark).
- Đối với các cấu hình tia lửa như bạn thường đặt với --conf, chúng được xác định bằng một đối tượng cấu hình (hoặc cấu hình chuỗi) trong SparkSession.builder.config
- Đối với các tùy chọn chính (như --master hoặc --driver-mem), bạn có thể đặt chúng bằng cách ghi vào biến môi trường PYSPARK_SUBMIT_ARGS. Để làm cho mọi thứ sạch sẽ và an toàn hơn, bạn có thể đặt nó từ bên trong Python và tia lửa sẽ đọc nó khi bắt đầu.
- Bắt đầu phiên bản, chỉ yêu cầu bạn gọi
getOrCreate()
từ đối tượng trình tạo.
Do đó, script của bạn có thể có một cái gì đó như thế này:
from pyspark.sql import SparkSession
if __name__ == "__main__":
if spark_main_opts:
# Set main options, e.g. "--master local[4]"
os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"
# Set spark config
spark = (SparkSession.builder
.config("spark.checkpoint.compress", True)
.config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")
.getOrCreate())