在火花中收集不可靠的行为

时间:2018-04-20 08:03:36

标签: apache-spark filter rdd collect

我对收集的不可靠行为感到惊讶。不确定这是否是预期的行为。

我有一个持久的DF - 分机。 当我运行一个过滤器,然后收集它时,它给了我价值。在某些时候它什么都不返回。 不知道为什么我会得到这种不可靠的行为。任何建议都非常感谢。

scala> ext.filter("sup = 12345678").collect()
res142: Array[org.apache.spark.sql.Row] = Array()

scala> 18/04/20 00:44:01 WARN ExecutorAllocationManager: No stages are running, but numRunningTasks != 0

scala> ext.filter("sup = 12345678").collect()
res143: Array[org.apache.spark.sql.Row] = Array([222222,12345678,2017,1])

其他过滤操作的行为非常相似。

scala> edgeDF.count() 
res95: Long = 65001895.

edgeDF被缓存,每次都得到相同的计数。但我使用edgeDF创建了另一个DF。

scala> val edgeDF1 = edgeDF.filter("s != sup") 
edgeDF1: org.apache.spark.sql.DataFrame = [sup: string, s: string] 
然后我缓存了它。现在指望edgeDF1每次给我不同的结果。

scala> edgeDF1.cache() 
scala> edgeDF1.count() 
res84: Long = 16156590 
scala> edgeDF1.count() 
res85: Long = 16157825

0 个答案:

没有答案