PySpark的sqlContext无法读取Postgres 9.6,出现NullPointerException错误。

3
尝试从Postgres数据库中使用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上运行。

1个回答

3

问题出在URL上面!

最初的URL是:url = 'jdbc:postgresql://tom:@localhost/gqp'

我移除了tom:@这一部分,然后它就起作用了。正确的URL格式应该是:jdbc:postgresql://ip_address:port/db_name,而我的URL是直接从一个Flask项目中拷贝过来的。

如果你正在阅读这篇文章,希望你没有犯同样的错误 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接