PySpark sqlContext读取Postgres 9.6 NullPointerException

时间:2017-03-09 03:16:15

标签: postgresql apache-spark pyspark pyspark-sql

尝试从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上运行。

1 个答案:

答案 0 :(得分:3)

网址是问题!

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

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

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