PySpark - Thiếu thư viện Python trên Worker
Note: This post is over 9 years old. The information may be outdated.
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.
- Nén toàn bộ dist-packages với các thư viện cần thiết thành file
py-package.zip
- 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
và .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