PySpark - Thiếu thư viện Python trên Worker

Apache Spark chạy trên Cluster, với Java thì đơn giản. Với Python thì package python phải được cài trên từng Node của Worker. Nếu không bạn sẽ gặp phải lỗi thiếu thư viện.

import hi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named hi

Spark có chức năng ship thư viện đến từng máy trong Cluster, tương tự chức năng addJars với Spark Java hoặc Scala.

  1. Nén toàn bộ dist-packages với các thư viện cần thiết thành file py-package.zip
  2. Sử dụng Spark Submit kèm thêm tham số --py-files <path/to/zip>
./bin/spark-submit app.py --py-files=py-package.zip

Spark sẽ tự động load thư viện trong zip vào từng node con, công việc dễ thở hơn là cài vào từng máy.

Ngoài ra cũng có thể sử dụng hàm sc.addPyFile

Spark cũng hỗ trợ thư viện dạng file .py.egg. Những thư viện nào sử dụng setuptools có thể dùng lệnh sau để đóng gói thành file .egg

python setup.py bdist_egg