>我有一个由Spark sql中的以下csv文件组成的数据框:
客户,铲斗,频率
A,3,4
A,2,1
A,1,4
B,1,3
B,3,4
乙,2,4
C,3,1
C,2,1
C,4,1
D,2,3
D,4,5
D,1,5
对于每个客户,我想要与最大频率相对应的最小桶号。 期望输出 :
客户,铲斗
A,1
B,2
C,2
D,1
任何帮助将不胜感激。谢谢朋友们!!
窗口函数应该对你有所帮助。代码应如下所示:
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)
我希望它会起作用