【问题标题】:How to minimum value of any column corresponding to maximum value of other column in spark如何将任何列的最小值对应于火花中其他列的最大值
【发布时间】:2017-06-17 08:51:13
【问题描述】:

我在 spark sql 中有一个由以下 csv 文件组成的数据框:

客户、桶、频率

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

对于每个客户,我想要与最大频率对应的最小桶数。所需的输出:

客户,桶

A,1

B,2

C,2

D,1

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

【问题讨论】:

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


    【解决方案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)
    

    我希望它会起作用

    【讨论】:

    • 没有“A”列,不知道你为什么用它
    • 再一个:考虑用dropColumn(numerator),以后不用了。但答案是正确的,应该被接受
    猜你喜欢
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2013-05-09
    • 2020-08-09
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多