加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用scala计算spark数据帧中列组合的实例

发布时间:2020-12-16 18:41:50 所属栏目:安全 来源:网络整理
导读:我在 scala中有一个名为df的火花数据框,有两列,比如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 我想添加另一个列,
我在 scala中有一个名为df的火花数据框,有两列,比如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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读