如何选择数据框中计数最多的项目,并将scala中的变量定义为变量?

时间:2018-01-07 12:14:23

标签: scala dataframe

例如,如果我有一个如下数据框,我想做val top_src_ip = 58.242.83.11之类的事情,但我不想修复这个数字。我希望它是一个基于数据帧的变量。命令是什么?

+--------------+------------+
|        src_ip|src_ip_count|
+--------------+------------+
|  58.242.83.11|          52|
|58.218.198.160|          33|
|58.218.198.175|          22|
|221.194.47.221|           6|

1 个答案:

答案 0 :(得分:1)

在我的回答here中,您可以使用argmax来获取相关值:

import org.apache.spark.sql.functions._
val newDF = df.agg(max(struct('src_ip_count, 'src_ip)) as 'tmp).select($"tmp.src_ip")

上面在数据框中创建结果,将其用作变量,你应该简单地得到头部(只有一个元素)并获得相关列(我假设src_ip是一个字符串):

val top_src_ip = newDF.head.getAs[String](0)