在spark数据集上调用createorreplacetempview时是否有任何性能影响?

wribegjk  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(721)

在我的代码中,我们使用了大量createorreplacetempview,以便可以在生成的视图上调用sql。这是在转换的多个阶段完成的。它还帮助我们将代码保存在每个执行特定操作的模块中。下面的示例代码将我的问题置于上下文中,如下所示。所以我的问题是:
如果从数据集创建临时视图,性能会有什么损失?
当我从每个转换中创建多个时,这会增加内存大小吗?
这些视图的生命周期是什么?是否有任何函数调用来删除它们?

val dfOne = spark.read.option("header",true).csv("/apps/cortex/landing/auth/cof_auth.csv")
dfOne.createOrReplaceTempView("dfOne")
val dfTwo = spark.sql("select * from dfOne where column_one=1234567890")
dfTwo.createOrReplaceTempView("dfTwo")
val dfThree = spark.sql("select column_two, count(*) as count_two from dfTwo")
dfTree.createOrReplaceTempView("dfThree")
f5emj3cl

f5emj3cl1#

不。
从手册上
以编程方式运行sql查询
sparksession上的sql函数使应用程序能够以编程方式运行sql查询,并将结果作为Dataframe返回。
为此,需要将Dataframe注册为sql临时视图。这是一个“懒惰”的人工制品,必须已经存在一个Dataframe/数据集。只需注册即可允许sql接口。

相关问题