如何与spark

时间:2017-01-31 19:15:13

标签: scala apache-spark apache-spark-sql spark-dataframe bigdata

我在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

任何帮助将不胜感激。谢谢啦!!

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)

我希望它会起作用