例如,如果我有一个如下数据框,我想做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|
答案 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)