Ik denk dat je postgres jar niet in slaves hoeft te kopiëren, omdat het stuurprogramma en de clustermanager voor alles zorgen. Ik heb op de volgende manier een dataframe van de externe bron van Postgres gemaakt:
Postgres driver jar downloaden :
cd $HOME && wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar
Dataframe maken :
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()
Verzenden naar Spark Job: Voeg de gedownloade jar toe aan het pad van de driverklasse terwijl u de vonkopdracht indient.
--properties spark.driver.extraClassPath=$HOME/postgresql-42.2.5.jar,spark.jars.packages=org.postgresql:postgresql:42.2.5