val df = sc.parallelize(Seq((a, 1), (a, null), (b, null)(b, 2),(b, 3),(c, 2),(c, 4),(c, 3))).toDF("col1","col2")
火花數據幀聚合階
輸出應該是這樣的下方。 col1 col2 a null b null c 4
我知道col在col1上獲得col2的最大值。我可以使用df.groupBy("col1").agg("col2"->"max")
但我的要求是,如果空有我想選擇該記錄,但如果null不存在,我想選擇col2的最大值。
我該如何做到這一點,任何請幫助我。
嘗試使用此 '進口org.apache.spark.sql.functions._' 'df.groupBy( 「COL1」)。AGG(collect_as_list( 「COL2」))'現在你有COL2名單試試這裏的邏輯,如果list.contains(null)返回null否則從列表中的最大值 –
你應該真的重新考慮問題的前提。 RDD中不需要有一堆'null'。 – Vidya
大家好,謝謝你的回覆。我以下面的方式完成了這項工作。我首先通過將null值更新爲該列的字符串'99 -99-9999'來修改數據框。然後我在其他列上做了一個組,並在我更新的列上使用了agg - > max。所以我的要求得到滿足。非常感謝所有迴應的人。 – Ramesh