擅长:python、mysql、java
<p>模式的问题和中值的问题差不多。虽然计算起来很容易,但计算却相当昂贵。可以使用sort后跟本地和全局聚合,也可以只使用另一个wordcount和filter:</p>
<pre><code>import numpy as np
np.random.seed(1)
df = sc.parallelize([
(int(x), ) for x in np.random.randint(50, size=10000)
]).toDF(["x"])
cnts = df.groupBy("x").count()
mode = cnts.join(
cnts.agg(max("count").alias("max_")), col("count") == col("max_")
).limit(1).select("x")
mode.first()[0]
## 0
</code></pre>
<p>无论哪种方式,都可能需要对每列进行完全洗牌。</p>