为spark-testing-base设置Spark Config属性

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (35)

当我尝试在Python中使用spark-testing-base时,我需要测试一个在Postgres DB上写入的函数。

为此,有必要向Spark Session提供连接到Posgtres的驱动程序; 为了实现这一点,我首先尝试覆盖该getConf() 方法(如评论中所述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()怎么覆盖这个方法?

提问于
用户回答回答于

不完全确定如何在python中执行此操作。在scala中,使用sbt,它非常直接。但无论如何,System.setProperty("spark.jars.packages", "org.postgresql:postgresql:42.1.1")

所以我会想看看如何用python + spark做到这一点。

扫码关注云+社区

领取腾讯云代金券