PySpark sqlContext read Postgres 9.6 NullPointerException



尝试从Postgres DB读取带有PySpark的表。我已经设置了以下代码并验证了SparkContext是否存在:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--driver-class-path /tmp/jars/postgresql-42.0.0.jar --jars /tmp/jars/postgresql-42.0.0.jar pyspark-shell'

from pyspark import SparkContext, SparkConf
conf = SparkConf()
conf.setMaster("local[*]")
conf.setAppName('pyspark')
sc = SparkContext(conf=conf)

from pyspark.sql import SQLContext
properties = {
"driver": "org.postgresql.Driver"
}
url = 'jdbc:postgresql://tom:@localhost/gqp'
sqlContext = SQLContext(sc)
sqlContext.read 
.format("jdbc") 
.option("url", url) 
.option("driver", properties["driver"]) 
.option("dbtable", "specimen") 
.load()

我收到以下错误:

Py4JJavaError: An error occurred while calling o812.load. : java.lang.NullPointerException

我的数据库名称是gqp,表是specimen,并且已经验证它是否正在使用 Postgres.app macOS应用程序在localhost上运行。

网址是问题所在!

原来是:url = 'jdbc:postgresql://tom:@localhost/gqp'

我删除了tom:@部分,它起作用了。URL必须遵循以下模式:jdbc:postgresql://ip_address:port/db_name,而我的URL是从Flask项目中直接复制的。

如果您正在阅读本文,希望您没有犯同样的错误:)

相关内容

  • 没有找到相关文章

最新更新