我得到类似的问题不工作:星火GROUPBY AGG预期
(df
.groupBy("email")
.agg(last("user_id") as "user_id")
.select("user_id").count,
df
.groupBy("email")
.agg(last("user_id") as "user_id")
.select("user_id")
.distinct
.count)
时,它提供一台计算机上运行:(15123144,15123144)
当集群中运行它给:(15123144, 24)
第一个是预期的,看起来正确,但第二个是可怕的错误。还有一点观察 - 即使我改变总数超过/小于15123144的数据,我在群集上得到distinct = 24。 即使我交换user_id和电子邮件,它也会给出相同的不同计数。
我比较困惑的看到:https://spark.apache.org/docs/1.5.2/api/scala/index.html#org.apache.spark.sql.DataFrame
AGG的医生说:对整个数据帧不聚集群。 “没有组”?那是什么意思?
任何线索?或Jira票?或者现在可以解决的问题?
感谢zero323,正如我所说的:当在一台计算机上运行时,它会给出:(15123144,15123144),并且通过数据不应该为不同的user_id重复发送电子邮件,反之亦然。我可以对数据说多少。对不起,我无法在这里分享样本数据。 –
没有显式的排序(就像在窗口函数中一样)“last”没有意义,所以根据配置你可以得到不同的结果。我将开始检查在集群中的'df.groupBy(...).agg(...)。select(...).distinct'后面得到的内容。它应该给你一些想法是怎么回事(是否有任何空值/空字符串)。没有一个可重复的例子(这里没有人想要你的真实数据),这个问题与任何开放的JIRA一样,都只是一种好奇心。 – zero323
在日志中,我看到:15/12/11 17:43:20 INFO scheduler.TaskSetManager:在slave4.example.com(24/24)上的阶段14.0(TID 795)中完成的任务23.0在671毫秒内是否与24个不同的值,或者我们可以从日志中的这条线做出任何事情? –