无法初始化Python类中的spark对象

2024-09-28 22:32:09 发布

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

我在delta_interface_logids.py文件中创建了sparkSession对象,如下所示:

from loader.LoadRunner import LoadRunner
from pyspark import SparkConf
from pyspark.sql import SparkSession
import pyspark.sql.functions as F


def get_data(spark):
    do_something_with_spark
    return something


if __name__ == "__main__":
    max_interface_log_id_dict = {}
    sparkConf = SparkConf().setAppName("DummyAP").set("spark.jars", "/home/usrname/jars/postgresql-42.1.4.jar ")
    spark = SparkSession.builder.config(conf=sparkConf).enableHiveSupport().getOrCreate()
    log_data = get_data(spark)
    load = LoadRunner(spark)

我在变量log_data中有get_data()的输出&;我试图用Python实现一个类,它接受log_data并执行一些操作。为此,我创建了一个类,如下所示: enter image description here

但是当我尝试使用spark对象的特性时,我发现spark对象没有正确初始化,因为我没有看到sparkSession对象生成的方法:spark,我已经在屏幕截图中看到的__init__方法中初始化了它

我在这里是否犯了错误,没有正确地看到spark对象的方法? 如何从文件delta_interface_logids.py向类LoadRunner正确发送和初始化spark对象


Tags: 对象方法frompyimportlogdataget
1条回答
网友
1楼 · 发布于 2024-09-28 22:32:09

我猜在您定义类时,编辑器无法知道spark是哪种类型的对象。仅仅因为您将类参数命名为spark,并不一定意味着您的代码将处理SparkSession对象

这是动态语言固有的“问题”(许多引用)。函数参数在运行时之外没有类型。当您使用编辑器定义类时,您肯定不在运行时

额外的

对于任何使用Python的人>;3.5,我强烈建议使用type annotations。这些注释有助于改进代码文档,并且可以使用mypy等工具进行静态检查

例如,在上面的代码中,我建议如下:

def __init__(self, spark: SparkSession):
    ...

相关问题 更多 >