PySpark分析查询的执行时间



我使用Docker映像和jupyter/pyspark笔记本,并在一个巨大的数据集上运行不同的查询。我利用RDD和dataframe,我想分析各种查询的执行时间。这些查询可以嵌套在某个函数

中。
def get_rdd_pair(rdd):
rdd = rdd.map(lambda x: (x[0], x[1])
.flatMapValues(lambda x: x)
return rdd

或类似的:

df = df.select(df.column1, explode(df.column2))
我希望你能明白。我现在正在寻找一种方法来可靠地测量总执行时间。我试着写一个装饰与time模块相结合。问题是,这只适用于get_rdd_pair(rdd)这样的函数如果我使用 之类的东西,这些函数(每行)会被调用很多次
rdd = rdd.map(get_rdd_pair)

所以这根本不起作用,有什么想法吗?我听说过SparkMeasure,但是要让它在Docker上运行似乎相当复杂,可能不值得付出努力。

SparkSession.time()在Pyspark中不可用。

相反,导入时间并测量它

import time
start_time = time.time()
df.show()
print(f"Execution time: {time.time() - start_time}")

最新更新