Spark cache() 与 repartition() 一起使用时不起作用



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()

最新更新