我得到類似的問題不工作:星火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個不同的值,或者我們可以從日誌中的這條線做出任何事情? –