为sparktestingbas设置Spark Config属性

2024-06-28 19:56:09 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图在Python中使用spark-testing-base时,我需要测试一个在Postgres数据库上编写的函数。在

为此,必须向Spark会话提供连接到Posgtres的驱动程序;为了实现这一点,我首先尝试重写getConf()method(如注释Override this to specify any custom configuration.)中所述)。但很明显它不起作用。可能我没有用所需的语法或其他什么来传递值,但是在多次尝试之后,我还是得到了错误java.lang.ClassNotFoundException: org.postgresql.Driver(通常是驱动程序Jar没有通过conf参数正确下载时)。在

试图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()方法:

^{pr2}$

但还是不走运。我做错什么了?我应该如何重写getConf()方法?在


Tags: 方法orgself数据库basereturnpostgresqlpackages
2条回答

必须重写setUpClass方法:

@classmethod
def setUpClass(cls):
    """Setup a basic Spark context for testing"""
    class_name = cls.__name__
    conf = SparkConf().set("spark.jars.packages", "org.postgresql:postgresql:42.1.1")
    cls.sc = SparkContext(cls.getMaster(), appName=class_name, conf=conf)
    quiet_py4j()

这样就可以将外部jar传递给Spark测试库。在

列奥纳多·诺莱托的作品:https://github.com/holdenk/spark-testing-base/issues/281#event-2200108290

不知道如何在python中实现这一点。在scala中,使用sbt,它非常简单。但无论如何,这里找到的System.setProperty("spark.jars.packages", "org.postgresql:postgresql:42.1.1")方法:https://github.com/holdenk/spark-testing-base/issues/187对我有用。在

所以我想看看如何用python+spark实现这个目标。在

相关问题 更多 >