python - 了解 SparkSQL createOrReplaceTempView 性能
问题描述
将 Spark 作为 SQL 代码调用的常用方法之一是使用createOrReplaceTempView
ie
df.createOrReplaceTempView('table_view_name')
df.createOrReplaceTempView
当我们将相同的 df 传递给多个函数进行一些转换时,多次调用如何影响性能。IE
# file_a.py
Class_a:
def function_a(df):
df.createOrReplaceTempView('table_view_name')
....
# file_b.py
Class_b:
def function_b1(df):
df.createOrReplaceTempView('table_view_name')
....
def function_b2(df):
df.createOrReplaceTempView('table_view_name')
....
# file_c.py
Class_c:
def function_c1(df):
df.createOrReplaceTempView('table_view_name')
....
#main.py
from file_a import Class_A
from file_b import Class_B
from file_c import Class_C
class_a = Class_A()
class_b = Class_B()
class_c = Class_C()
sample_df = Spark.read.parquet("...")
sample_df = class_a.function_a(sample_df)
# Note class_b has two transformations second one use the output of the first one
sample_df_b = class_b.function_b1(sample_df)
sample_df = class_b.function_b2(sample_df_b)
# Note class_c has one transformations but it take the output of class_a as input
sample_df_c = class_c.function_c1(sample_df)
现在我想知道
- 调用
createOrReplaceTempView
每个函数会产生性能问题吗?有没有更好的办法? - 来自 class_b 的 function_b1 和来自 class_c 的 function_c1 都采用相同的输入,所以如果我
createGlobalTempView
在完成转换工作后使用并手动删除它们,它会提高性能吗?
解决方案
推荐阅读
- python - 根据匹配从字符串中获取子字符串
- django - 使用 nginx 和 gunicorn 运行多个 django 项目
- php - 如何检查 Laravel,如果表完全为空,在做任何事情之前
- android - 在mysql上用时间更新recyclerview
- excel - 如果该行中的单元格已被有条件地格式化,则突出显示单元格或行
- mysql - MySQL 用户定义函数 - SQL 语法错误
- python - linux中的“python -c'print'”和“(python -c'print'; cat)”有什么区别
- frames - 从视频中提取帧时如何避免视频中重复或相似的帧?
- javascript - 将更改的 HTML 保存到 Javascript 变量?
- actionscript-3 - AS3:如何检测负数