在EMR上使用带有apachespark的postgresqljdbc源代码
我已经运行了现有的EMR集群,希望从Postgresql DB源创建DF 为此,您似乎需要使用更新的在EMR上使用带有apachespark的postgresqljdbc源代码,postgresql,amazon-web-services,apache-spark,jdbc,pyspark,Postgresql,Amazon Web Services,Apache Spark,Jdbc,Pyspark,我已经运行了现有的EMR集群,希望从Postgresql DB源创建DF 为此,您似乎需要使用更新的spark.driver.extraClassPath修改spark-defaults.conf,并指向已在主节点和从节点上下载的相关PostgreSQL JAR,或您可以将这些作为参数添加到spark提交作业中 既然我想使用现有的Jupyter笔记本来处理数据,而不是真正地重新启动集群,那么解决这个问题最有效的方法是什么 我尝试了以下方法: 在主目录和从目录上创建新目录(/usr/lib/pos
spark.driver.extraClassPath
修改spark-defaults.conf,并指向已在主节点和从节点上下载的相关PostgreSQL JAR,或您可以将这些作为参数添加到spark提交作业中
既然我想使用现有的Jupyter笔记本来处理数据,而不是真正地重新启动集群,那么解决这个问题最有效的方法是什么
我尝试了以下方法:
spark.driver.extraClassPath :/usr/lib/postgresql/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/$
SQL\u CONN=“jdbc:postgresql://some_postgresql_db:5432/dbname?user=user&password=password"
jdbc(SQL_CONN,table=“someTable”,properties={“driver”:'com.postgresql.jdbc.driver'})
Py4JJavaError: An error occurred while calling o396.jdbc.
: java.lang.ClassNotFoundException: com.postgresql.jdbc.Driver
感谢您的帮助。检查的github repo。类路径似乎是这样的
org.postgresql.Driver
。尝试使用相同的方法。我认为您不需要在从站中复制postgres jar,因为驱动程序和集群管理器会处理所有事情。我已经通过fo从postgres的外部源创建了数据帧以下方式:
下载postgres驱动程序jar:
cd $HOME && wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar
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()
创建数据帧:
cd $HOME && wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar
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()
驱动程序应同时位于驱动程序和执行器上(
spark.executor.extraClassPath
)。此外,驱动程序的版本看起来很时髦-您不太可能使用JRE 6。.是否需要重新启动主/群集以“读取”spark-defaults.conf文件?或者在进行JDBC调用时是否会动态检查此文件?应用程序必须是,群集号。也不是由。最好链接到文档:谢谢-这是下一步是尝试使用环境变量隐藏JDBC访问凭据。但似乎很难找到此文档。