在 Spark 的 Dataframe 行中查找最小值
Posted
技术标签:
【中文标题】在 Spark 的 Dataframe 行中查找最小值【英文标题】:Finding the lowest value in a Dataframe Row in Spark 【发布时间】:2017-04-28 01:12:39 【问题描述】:我正在尝试从 DataFrame 中的 [row] 中找出最小值。我怎样才能做到这一点?我的数据集是这样的:
aaaa |-32566.335700000003| 27668.7725| 20183.4786|
bbbb | -3.924099999999997| 5.802000000000006| 4.988000000000004|
cccc | 951546.8948000005| -686025.1569999934| -62493.96830000022|
xxxx |-26563.328700000005| 52490.610100000005| -5555.277|
研究:我要做的是转置上面的内容,然后对上面的行进行排序和选择作为列。请提出任何替代方法,或者使用现有的 Spark 数据集函数。
以上只是一个示例数据集,实际列数远不止于此,以获得行中的最小值。
【问题讨论】:
【参考方案1】:您可以通过将一行中的所有数字列作为一个列表,然后在该列表中找到最小值来做到这一点:
val df = sc.parallelize(Seq(("a",1.0,2.0,3.0),("b",-1.0,-2.0,-3.0),("c",-1.0,0.0,1.0))).toDF("id","v1","v2","v3")
df.show
val numericCols = List("v1", "v2", "v3") // you can get these from the df.schema if you need generic approach
val dfMin = df.map(r => (r.getAs[String]("id"), numericCols.map(column => r.getAs[Double](column)).min)).toDF("id", "minValue")
dfMin.show
【讨论】:
以上是关于在 Spark 的 Dataframe 行中查找最小值的主要内容,如果未能解决你的问题,请参考以下文章
使用另一个 RDD/df 在 Spark RDD 或数据帧中执行查找/翻译