gpt4 book ai didi

scala - 使用Scala计算Spark数据框中的列组合实例

转载 作者:行者123 更新时间:2023-12-04 16:43:10 25 4
gpt4 key购买 nike

我在Scala中有一个名为df的spark数据框,其中有两列,例如a和b。 a列包含字母,b列包含数字,给出以下内容。

   a   b
----------
g 0
f 0
g 0
f 1

我可以使用获得不同的行
val dfDistinct=df.select("a","b").distinct

它给出了以下内容:
   a  b
----------
g 0
f 0
f 1

我想添加另一列,其中包含这些不同组合在第一个数据帧中出现的次数,因此我最终得到
a  b  count
----------
g 0 2
f 0 1
f 1 1

我不介意这是否修改了原始命令,或者我对dfDistinct进行了单独的操作以提供另一个数据帧。

任何建议都将不胜感激,对于这个问题的微不足道的性质,我深表歉意,但我并不是在scala或spark中进行此类操作的经验最丰富的人。

谢谢

院长

最佳答案

您可以简单地汇总和计算:

df.groupBy($"a", $"b").count

或更详细些:
import org.apache.spark.sql.functions.{count, lit}

df.groupBy($"a", $"b").agg(count(lit(1)).alias("cnt"))

两者都等效于原始SQL聚合:
df.registerTempTable("df")

sqlContext.sql("SELECT a, b, COUNT(1) AS cnt FROM df GROUP BY a, b")

关于scala - 使用Scala计算Spark数据框中的列组合实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33393815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com