擅长:python、mysql、java
<p>这是因为spark是<a href="https://data-flair.training/blogs/apache-spark-lazy-evaluation/" rel="nofollow noreferrer">lazily evaluated</a>。调用tmp.count()时,这是一个操作步骤。换句话说,tmp.count的计时也包括过滤时间。如果要真正比较这两个计数,请尝试以下方法:</p>
<pre><code>%%time
df.count()
id0 = df.first().ID ## First ID
tmp = df.filter( (df['ID'] == id0) )
tmp.persist().show()
%%time
tmp.count()
</code></pre>
<p>这里的重要组件是执行计数之前的tmp.persist().show()<em>。这将执行筛选并缓存结果。这样,tmp.count()只包含实际的计数时间</p>