【问题标题】:Pyspark-object has no attribute 'spark'Pyspark-object 没有属性'spark'
【发布时间】:2021-03-09 22:32:48
【问题描述】:
    from unittest import TestCase

from pyspark.sql import SparkSession
from lib.utils import load_survey_df, count_by_country


class UtilsTestCase(TestCase):
    @classmethod
    def create_testing_pyspark_session(cls):
        return SparkSession.builder.master('local[2]').appName('my - local - testing - pyspark - context').getOrCreate()

    @classmethod
    def SetUpClass(cls) -> None:
        cls.spark = cls.create_testing_pyspark_session()

    def test_datafile_loading(self):
        sample_df = load_survey_df(self.spark, "data/sample.csv")
        result_count = sample_df.count()
        self.assertEqual(result_count, 9, "Record count should be 9")

    def test_country_count(self):
        sample_df = load_survey_df(self.spark, "data/sample.csv")
        count_list = count_by_country(sample_df).collect()
        count_dict = dict()
        for row in count_list:
            count_dict[row["Country"]] = row["count"]
        self.assertEqual(count_dict["United States"], 4, "Count for United States should be 4")
        self.assertEqual(count_dict["Canada"], 2, "Count for United States should be 2")
        self.assertEqual(count_dict["United Kingdom"], 1, "Count for United States should be 1")

大家好, 你能告诉我这段代码有什么问题吗?我收到以下错误: 错误 回溯(最近一次通话最后): testPartExecutor 中的文件“C:\Users\abc\AppData\Local\Continuum\anaconda3\lib\unittest\case.py”,第 59 行 屈服 运行中的文件“C:\Users\abc\AppData\Local\Continuum\anaconda3\lib\unittest\case.py”,第 628 行 测试方法() 文件“C:\Users\abc\PycharmProjects\HelloSpark\lib\test_utils.py”,第 17 行,在 test_datafile_loading sample_df = load_survey_df(self.spark, "data/sample.csv") AttributeError: 'UtilsTestCase' 对象没有属性 'spark'

【问题讨论】:

  • 这是setUpClass,而不是SetUpClass

标签: python pyspark pytest


【解决方案1】:

我看到在您的 SetUpClass 方法中,您正在使用 cls.spark, 你需要声明attribute in class UtilsTestCase

只需在您的课程之后添加spark 到您的代码中,如下所示即可修复它:

class UtilsTestCase(TestCase):
  spark
  @classmethod
  def create_testing_pyspark_session(cls):
    return SparkSession.builder.master('local[2]').appName('my - local - testing - pyspark - context').getOrCreate()

  @classmethod
  def SetUpClass(cls) -> None:
    cls.spark = cls.create_testing_pyspark_session()

【讨论】:

    猜你喜欢
    • 2020-07-25
    • 2013-04-22
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多