我使用SparkSQL
从Parquet文件加载了rdd data_rdd = sqlContext.read.parquet(filename).rdd
我注意到,一旦有一些聚合函数触发了火花作业,就会执行文件操作的实际读取。
我需要在没有时间从文件中读取数据的情况下测量作业的计算时间。 (即与输入rdd(dataframe)相同,因为它是从sparkSQL创建的)
是否有任何函数触发在执行程序内存上加载文件?
我已经尝试.cache()
,但似乎它仍在触发阅读操作,这是其工作的一部分。
答案 0 :(得分:1)
Spark是懒惰的,只会进行所需的计算。
您可以.cache()
然后.count()
所有行:
data_rdd = sqlContext.read.parquet(filename).rdd
data_rdd.cache()
data_rdd.count()
以后的任何计算都将从data_rdd
的缓存状态开始,因为我们使用count()
读取了整个表格。