擅长:python、mysql、java
<p><a href="http://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.RDD.reduce" rel="nofollow">^{<cd1>}</a>的文档说明:</p>
<blockquote>
<p>Reduces the elements of this RDD using the specified commutative and associative binary operator.</p>
</blockquote>
<p><code>def plusOne(sum, v): return sum + 1</code>不是可交换的。它完全忽略其中一个参数。所以你看到的是未定义的行为。(我建议考虑为什么函数必须是可交换的。如果你明白了,你对火花的理解就更好了!)在</p>
<p>解决方案是使用<code>RDD.count()</code>。但是,如果您坚持使用<code>reduce()</code>,您可以这样做:</p>
<pre><code>def count(rdd):
return rdd.map(lambda x: 1).reduce(lambda a, b: a + b)
</code></pre>