0
我是Spark新手,我很驚訝某些結果不會重新計算,儘管我沒有(至少我不想) )緩存它們,即我必須重新啓動sbt才能看到更新的值。Spark Scala:如何強制Spark重新計算一些結果(不使用緩存)
這裏是代碼中的相關片段:
val df: DataFrame = sqlContext.read.format("jdbc").options(
Map(
"url" -> "jdbc:postgresql://dbHost:5432/tests?user=simon&password=password",
"dbtable" -> "events")
).load()
val cached = df.cache()
val tariffs = cached.map(row => row.getAs[Int](2))
如果我打印tariffs.toDF().mean()
我得到正確的平均水平,但如果我我的代碼更改爲:
val tariffs = cached.map(row => 0)
我沒有看到新平均(0)
,直到我重新啓動sbt。如何避免這種行爲?
不知道你想達到與'.MAP(行=> 0)'什麼。你只需要創建一個新的'RDD',爲什麼它應該修改任何東西?你如何檢查它? –
我不試圖做任何事情,它只是表明0的RDD [Int]的平均值不是0,而是之前用實際值計算的平均值(即,tariffs.toDF()。mean()output 17.18而不是0)直到我重新啓動sbt。 – Simon
嘗試使用'unpersist()'將其從緩存中移除? –