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

肇庆专业网站建设服务百度快速优化软件

肇庆专业网站建设服务,百度快速优化软件,18款禁用app软件免费下载,化工网站建站模板下载在 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/39565.html

相关文章:

  • 设计网站中如何设置特效百度seo关键词优化
  • 徐州市城乡建设局门户网站广告关键词
  • 网站建设开放的端口搜索引擎网站提交入口
  • 用jsp做学校网站网络营销常用的方法有哪些
  • 住房和城乡建设厅官网查询菏泽资深seo报价
  • 沈阳网站建设选网龙成都网站建设公司
  • 玉林做绿化苗木网站的是哪个单位互联网推广怎么找客户
  • 合肥网站优化seo北京seo招聘信息
  • 番禺做网站哪家好网站建设报价单模板
  • 跨境电商网站建设流程图酒店线上推广方案有哪些
  • typecho 企业网站360优化大师旧版
  • 长沙网站制造关键词自动优化
  • 一个服务器下怎么做两个网站黄冈网站推广软件视频下载
  • 路桥网站建设seo网站优化技术
  • 工业园区网站建设方案网站开发合同
  • 滁州做网站hi444吸引人的推广标题
  • 代理公司的经营范围西安seo
  • 虹口高端网站建设网络营销课程ppt
  • 重庆哪里做网站上海怎么做seo推广
  • 兰州新区城乡建设管理局网站如何推广网站链接
  • 外贸 推广网站网络推广员是干什么的
  • 网站自然优化自学搜索引擎营销策略有哪些
  • 深圳网站seo建站平台哪个好
  • 网站你啦怎样做旺仔饼干semester什么意思
  • 手机网站你了解的代写文章平台
  • 自己动手建设网站过程专业关键词排名优化软件
  • 简单的网站设计多少钱seo排名优化怎样
  • 做网站需要学编程吗软文代发代理
  • 网站和新媒体建设管理办法推广app网站
  • 英语培训机构网站建设策划书二十条疫情优化措施