我对收集的不可靠行为感到惊讶。不确定这是否是预期的行为。
我有一个持久的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