我正在学习Spark,并尝试处理一些巨大的数据集。我不明白为什么使用以下策略(伪)看不到阶段完成时间的减少:
data = sc.textFile(dataset).cache()
while True:
data.count()
y = data.map(...).reduce(...)
data = data.filter(lambda x: x < y).persist()
所以想法是选择y,以便在大多数情况下将数据减半。但是由于某种原因,看起来所有数据总是在每个count()上再次被处理。
这是某种反模式吗?我应该怎么用Spark做到这一点?