当前位置: 首页 > wzjs >正文

肇庆专业网站建设服务在线培训网站次要关键词

肇庆专业网站建设服务,在线培训网站次要关键词,深圳做百度网站,成品免费网站源码在 Spark 中,agg 是用于对 DataFrame 进行聚合操作的函数。它可以同时对多个列应用多个聚合函数,并返回一个新的 DataFrame。agg 通常与 groupBy 结合使用,用于对分组后的数据进行聚合操作。 以下是 agg 的详细用法和示例。 1. agg 的基本用…

在 Spark 中,agg 是用于对 DataFrame 进行聚合操作的函数。它可以同时对多个列应用多个聚合函数,并返回一个新的 DataFrame。agg 通常与 groupBy 结合使用,用于对分组后的数据进行聚合操作。

以下是 agg 的详细用法和示例。


1. agg 的基本用法

语法
val aggregatedDF = df.agg(F.sum("column1").as("total_column1"),F.avg("column2").as("average_column2")
)
  • F.sum("column1"):对 column1 列求和。

  • F.avg("column2"):对 column2 列计算平均值。

  • as("alias"):为聚合结果指定别名。


2. agg 与 groupBy 结合使用

agg 通常与 groupBy 结合使用,用于对分组后的数据进行聚合操作。

示例

假设有一个 DataFrame,包含用户的姓名、部门和工资:

import org.apache.spark.sql.{SparkSession, functions => F}val spark = SparkSession.builder().appName("Agg Example").master("local[*]").getOrCreate()// 示例数据
val data = Seq(("Alice", "HR", 3000),("Bob", "IT", 4000),("Charlie", "HR", 3500),("David", "IT", 4500),("Eva", "Finance", 5000)
)// 创建 DataFrame
val df = spark.createDataFrame(data).toDF("name", "department", "salary")// 按部门分组,并计算工资总和、平均工资、最高工资和最低工资
val aggregatedDF = df.groupBy("department").agg(F.sum("salary").as("total_salary"),F.avg("salary").as("average_salary"),F.max("salary").as("max_salary"),F.min("salary").as("min_salary")
)// 显示结果
aggregatedDF.show()

输出:

+----------+------------+--------------+----------+----------+
|department|total_salary|average_salary|max_salary|min_salary|
+----------+------------+--------------+----------+----------+
|        HR|        6500|        3250.0|      3500|      3000|
|        IT|        8500|        4250.0|      4500|      4000|
|   Finance|        5000|        5000.0|      5000|      5000|
+----------+------------+--------------+----------+----------+
  • groupBy("department"):按部门分组。

  • agg:对每个部门计算工资总和、平均工资、最高工资和最低工资。


3. agg 的多种聚合函数

agg 可以同时应用多个聚合函数。以下是一些常用的聚合函数:

聚合函数描述
F.sum("column")对列求和
F.avg("column")计算列的平均值
F.min("column")计算列的最小值
F.max("column")计算列的最大值
F.count("column")统计列的非空值数量
F.collect_list("column")将列的值收集为列表
F.collect_set("column")将列的值收集为集合(去重)
示例

统计每个部门的员工数量、工资总和、平均工资、最高工资、最低工资,以及员工姓名列表:

val aggregatedDF = df.groupBy("department").agg(F.count("name").as("employee_count"),F.sum("salary").as("total_salary"),F.avg("salary").as("average_salary"),F.max("salary").as("max_salary"),F.min("salary").as("min_salary"),F.collect_list("name").as("employees")
)aggregatedDF.show(truncate = false)

输出:

+----------+--------------+------------+--------------+----------+----------+----------------------+
|department|employee_count|total_salary|average_salary|max_salary|min_salary|employees             |
+----------+--------------+------------+--------------+----------+----------+----------------------+
|HR        |2             |6500        |3250.0        |3500      |3000      |[Alice, Charlie]      |
|IT        |2             |8500        |4250.0        |4500      |4000      |[Bob, David]          |
|Finance   |1             |5000        |5000.0        |5000      |5000      |[Eva]                 |
+----------+--------------+------------+--------------+----------+----------+----------------------+

4. 全局聚合(不分组)

如果不使用 groupByagg 会对整个 DataFrame 进行全局聚合。

示例

计算所有员工的工资总和、平均工资、最高工资和最低工资:

val globalAggDF = df.agg(F.sum("salary").as("total_salary"),F.avg("salary").as("average_salary"),F.max("salary").as("max_salary"),F.min("salary").as("min_salary")
)globalAggDF.show()

输出:

+------------+--------------+----------+----------+
|total_salary|average_salary|max_salary|min_salary|
+------------+--------------+----------+----------+
|       20000|        4000.0|      5000|      3000|
+------------+--------------+----------+----------+

5. 多列分组和聚合

可以对多列进行分组,并对多列应用聚合函数。

示例

假设有一个 DataFrame,包含用户的姓名、部门、职位和工资:

val data = Seq(("Alice", "HR", "Manager", 3000),("Bob", "IT", "Developer", 4000),("Charlie", "HR", "Analyst", 3500),("David", "IT", "Developer", 4500),("Eva", "Finance", "Manager", 5000)
)val df = spark.createDataFrame(data).toDF("name", "department", "role", "salary")// 按部门和职位分组,并计算工资总和和平均工资
val multiGroupDF = df.groupBy("department", "role").agg(F.sum("salary").as("total_salary"),F.avg("salary").as("average_salary")
)multiGroupDF.show()

输出:

+----------+---------+------------+--------------+
|department|     role|total_salary|average_salary|
+----------+---------+------------+--------------+
|        HR|  Manager|        3000|        3000.0|
|        IT|Developer|        8500|        4250.0|
|        HR|  Analyst|        3500|        3500.0|
|   Finance|  Manager|        5000|        5000.0|
+----------+---------+------------+--------------+

6. 使用表达式字符串

除了使用函数外,agg 还支持使用表达式字符串。

示例
val aggregatedDF = df.groupBy("department").agg("salary" -> "sum","salary" -> "avg","salary" -> "max","salary" -> "min"
)aggregatedDF.show()

输出:

+----------+-----------+-----------+-----------+-----------+
|department|sum(salary)|avg(salary)|max(salary)|min(salary)|
+----------+-----------+-----------+-----------+-----------+
|        HR|       6500|     3250.0|       3500|       3000|
|        IT|       8500|     4250.0|       4500|       4000|
|   Finance|       5000|     5000.0|       5000|       5000|
+----------+-----------+-----------+-----------+-----------+

总结

  • agg 用于对 DataFrame 进行聚合操作,通常与 groupBy 结合使用。

  • 可以同时应用多个聚合函数,并为结果指定别名。

  • 支持全局聚合(不分组)和多列分组聚合。

  • 可以使用函数或表达式字符串定义聚合操作。

http://www.dtcms.com/wzjs/410528.html

相关文章:

  • 网站建设策划师营销策划与运营方案
  • 榆林网站制作百度广告太多
  • 荔浦火车站建设在哪里长沙网络公司营销推广
  • 比较好的做网站的公司网站设计开发网站
  • 单机做游戏 迅雷下载网站2023年8月新冠又来了
  • 北京景网站建设软文广告例子
  • 国内哪个网站是做电子元器件的网络运营好学吗
  • 长春网站制作顾问洛阳seo网络推广
  • 哪个网站买东西最便宜网络服务主要包括
  • 电子商务网站建设与策划产品推广外包
  • 上海网站建设外包电子商务网站建设案例
  • dreamweaver网站建设大赛方案怎样做一个自己的网站
  • 做网站的傻瓜软件找谁做百度关键词排名
  • 什么语言开发网站seo优化团队
  • 怎么能让网站排名靠前seo业务培训
  • 滨州建设厅网站什么是网络营销平台
  • 商城网站建设公司电话qq空间秒赞秒评网站推广
  • 益阳市人民政府门户网站益阳网站seo
  • 青羊区定制网站建设报价深圳网站设计三把火
  • 广告牌免费设计在线生成seo成创网络
  • wordpress怎样建站互联网营销模式
  • 成都哪里做网站便宜上海网络推广专员
  • 河北建设厅网站技术电话肇庆seo排名
  • 烟台h5网站开发培训心得体会怎么写
  • 徐州人才网档案查询资源优化排名网站
  • 怎么看网站的建设时间广州网络营销推广公司
  • 城建培训中心官网seo需要掌握哪些技术
  • 中国建设银行邵阳分行网站网络建设推广
  • 详情页设计软件今日头条seo
  • 做抽奖的网站犯法吗2023年7月疫情还会严重吗