我在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
并执行一些操作。为此,我创建了一个类,如下所示:
但是当我尝试使用spark对象的特性时,我发现spark对象没有正确初始化,因为我没有看到sparkSession对象生成的方法:spark
,我已经在屏幕截图中看到的__init__
方法中初始化了它
我在这里是否犯了错误,没有正确地看到spark对象的方法?
如何从文件delta_interface_logids.py
向类LoadRunner
正确发送和初始化spark对象
我猜在您定义类时,编辑器无法知道
spark
是哪种类型的对象。仅仅因为您将类参数命名为spark
,并不一定意味着您的代码将处理SparkSession
对象这是动态语言固有的“问题”(许多引用)。函数参数在运行时之外没有类型。当您使用编辑器定义类时,您肯定不在运行时
额外的
对于任何使用Python的人>;3.5,我强烈建议使用type annotations。这些注释有助于改进代码文档,并且可以使用mypy等工具进行静态检查
例如,在上面的代码中,我建议如下:
相关问题 更多 >
编程相关推荐