我在spark sql中有一个由以下csv文件组成的数据框:
CUST,铲斗,频率
A,3,4
A,2,1
A,1,4
B,1,3
B,3,4
B,2,4
C,3,1
C,2,1
C,4,1
d,2,3-
d,4,5-
d,1,5-
对于每个客户,我想要最小频率对应的最小桶数。期望的输出:
CUST,桶
A,1
B,2
C,2
d,1
任何帮助将不胜感激。谢谢啦!!
答案 0 :(得分:3)
窗口功能应该对您有所帮助。代码应如下所示:
val partitioner = Window.partionBy($"cust").orderBy($"freq", $"bucket" desc)
val partitionedDF = df.withColumn("numerator", rowNumber.over(partitioner))
//df is dataframe, which contains your data
partitionedDF.filter('numerator == 1)
我希望它会起作用