spark cache(( 函数与 repartition(( 一起使用时不会缓存数据帧。谁能解释为什么会这样?
编辑:
df.repartition(1000).cache()
df.count()
我尝试在单独的行上做它们,这很有效。
编辑:
df2 = df1.repartition(1000)
df2.cache()
df2.count()
我希望缓存数据帧,但在 UI 上的存储中看不到它
数据帧像RDD一样是不可变的,因此,尽管您在df上调用重新分区,但您不会将其分配给任何DF,并且当前的df不会更改。
df.repartition(1000).cache()
df.count()
上面的一个是行不通的。
df.repartition(1000)
df.cache()
df.count()
对于上面的代码,如果您签入存储,它不会显示缓存的 1000 个分区。存储会将缓存的分区显示为 df.rdd.getNumPartitions(不会为 1000(。
所以试试这个。
val df1 = df.repartition(1000).cache()
df1.count()
这应该有效。
您必须调用一个操作,以便触发缓存。做:
df2 = df1.repartition(1000)
df2.cache().count()