我有一个在Databricks上运行的pyspark管道。一个管道基本上是一个序列中执行的许多函数,它们是阅读/创建表、连接、转换等(即常见的spark东西)。因此,例如,它可能是如下所示的东西:
def read_table():
def perform_tansforms():
def perform_further_transforms():
def run_pipeline():
read_table()
perform_tansforms()
perform_further_transforms()
现在,为了更好地构建代码,我将管道的常量和函数封装到一个类中,该类包含静态方法和run方法,如下所示:
class CustomPipeline():
class_variable_1 = "some_variable"
class_variable_2 = "another_variable"
@staticmethod
def read_table():
@staticmethod
def perform_tansforms():
@staticmethod
def perform_further_transforms():
@staticmethod
def run():
CustomPipeline.read_table()
CustomPipeline.perform_tansforms()
CustomPipeline.perform_further_transforms()
现在,这可能是一个愚蠢的问题,但从概念上讲,这会以任何方式影响管道的性能吗?例如,将管道的各个部分封装到类中可能会导致从Python解释器到运行Spark的JVM的通信的一些额外开销。
任何帮助都是感激的,谢谢。另外,如果需要任何其他细节,请评论。
1条答案
按热度按时间lmvvr0a81#
不是直接的,不,没关系。
我想这可能很重要,例如,你的类有一堆初始化,执行了每一步的所有初始化,不管执行了哪一步,但是我在这里没有看到。
这在Spark和Databricks上没有什么不同。