Tôi nghĩ rằng bạn không cần phải sao chép postgres jar trong nô lệ vì chương trình trình điều khiển và trình quản lý cụm đảm nhiệm mọi thứ. Tôi đã tạo dataframe từ nguồn bên ngoài Postgres theo cách sau:
Tải xuống tệp trình điều khiển postgres :
cd $HOME && wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar
Tạo khung dữ liệu :
atrribute = {'url' : 'jdbc:postgresql://{host}:{port}/{db}?user={user}&password={password}' \
.format(host=<host>, port=<port>, db=<db>, user=<user>, password=<password>),
'database' : <db>,
'dbtable' : <select * from table>}
df=spark.read.format('jdbc').options(**attribute).load()
Gửi đến công việc bắt đầu: Thêm jar đã tải xuống vào đường dẫn lớp trình điều khiển trong khi gửi tác vụ tia lửa.
--properties spark.driver.extraClassPath=$HOME/postgresql-42.2.5.jar,spark.jars.packages=org.postgresql:postgresql:42.2.5