我很想知道何时需要在spark中持久化Dataframe,何时不需要。cases:-
如果我需要文件中的数据(我需要保存它吗?如果我应用重复计数like:-
val df=spark.read.json("file://root/Download/file.json")
df.count
df.count
我需要坚持吗??因为根据我的说法,它应该在第一次计数后将df存储在内存中,并在第二次计数时使用相同的df。文件中的记录是4,因为当我实际检查它时,它一次又一次地读取文件,所以为什么spark不将它存储在内存中
第二个问题是在Spark阅读是一个行动还是转变?
1条答案
按热度按时间nwsw7zdq1#
Dataframe在设计上是不可变的,所以对它们进行的每一次转换都会创建一个新的Dataframe。spark管道通常涉及多个转换,从而创建多个Dataframe。如果spark存储所有这些Dataframe,内存需求将是巨大的。因此spark将持久化Dataframe的责任留给了用户。无论您打算重用哪个Dataframe,都可以持久化它们,然后在完成后取消持久化。
我不认为我们可以将spark read定义为一种行动或转变。动作/变换应用于Dataframe。要识别差异,您应该记住转换操作将返回一个新的Dataframe,而操作将返回一些值。