当我试图在Python语言中使用spark-testing-base时,我需要测试一个写在Postgres DB上的函数。
要做到这一点,有必要向Spark会话提供连接到Posgtres的驱动程序;为此,我首先尝试覆盖getConf()
method (如注释Override this to specify any custom configuration.
中所述)。但显然它不起作用。可能我没有使用所需的语法传递值,但在多次尝试之后,我还是得到了错误java.lang.ClassNotFoundException: org.postgresql.Driver
(典型的情况是没有通过conf参数正确下载Driver Jar )。
尝试的getConf
覆盖:
def getConf(self):
return ("spark.jars.packages", "org.postgresql:postgresql:42.1.1")
def getConf(self):
return {"spark.jars.packages", "org.postgresql:postgresql:42.1.1"}
def getConf(self):
return SparkConf()\
.setMaster("local[*]")\
.setAppName("test")\
.set("spark.jars.packages", "org.postgresql:postgresql:42.1.1")
因此,我甚至尝试像这样覆盖the setUp()
方法:
def setUp(self):
try:
from pyspark.sql import Session
self.session = Session.Builder.config("spark.jars.packages", "org.postgresql:postgresql:42.1.1")
self.sqlCtx = self.session._wrapped
except Exception:
self.sqlCtx = SQLContext(self.sc)
但还是不走运。那么我做错了什么呢?我应该如何重写getConf()
方法?
https://stackoverflow.com/questions/54578781
复制相似问题