在我的代码中,我们使用了大量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")
1条答案
按热度按时间f5emj3cl1#
不。
从手册上
以编程方式运行sql查询
sparksession上的sql函数使应用程序能够以编程方式运行sql查询,并将结果作为Dataframe返回。
为此,需要将Dataframe注册为sql临时视图。这是一个“懒惰”的人工制品,必须已经存在一个Dataframe/数据集。只需注册即可允许sql接口。