Gou*_*eru 4 caching apache-spark pyspark
Spark cache() 函数与 repartition() 一起使用时不会缓存数据帧。谁能解释为什么会发生这种情况?
编辑:
df.repartition(1000).cache()
df.count()
Run Code Online (Sandbox Code Playgroud)
我尝试过在不同的线路上进行这些操作,效果很好。
编辑:
df2 = df1.repartition(1000)
df2.cache()
df2.count()
Run Code Online (Sandbox Code Playgroud)
我期望数据帧被缓存,但我在 UI 的存储中看不到它
小智 8
Dataframes 和 RDD 一样是不可变的,所以尽管你在 df 上调用 repartition,你并没有将它分配给任何 DF 并且当前的 df 不会改变。
df.repartition(1000).cache()
df.count()
Run Code Online (Sandbox Code Playgroud)
上面那个不行。
df.repartition(1000)
df.cache()
df.count()
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,如果您签入存储,它不会显示缓存的 1000 个分区。存储会将缓存的分区显示为df.rdd.getNumPartitions(不是 1000)。
所以试试这个。
val df1 = df.repartition(1000).cache()
df1.count()
Run Code Online (Sandbox Code Playgroud)
这应该有效。