当前位置: 首页 > 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/53287.html

相关文章:

  • 自己做网站用php最快么东莞互联网推广
  • 郑州+高端网站建设北京自动网络营销推广
  • 单页网站制作建站仿站酒吧营销用什么软件找客源
  • 软件开发去哪里学aso优化技巧大aso技巧
  • 西安商城网站搭建关键词搜索工具有哪些
  • 贵阳seo网站建设seo技术培训东莞
  • 网站开发项目规划书百度快照推广一年要多少钱
  • 织梦自定义表单做网站在线留言最近几天的新闻
  • 手机上上建设网站成都网站seo费用
  • 赣州人才网官网登录优化大师百科
  • 网站被k是什么意思如何自己开发软件app
  • 深圳营销型网站建设 龙华信科网络推广员的前景
  • 网站标题与关键词制作网页完整步骤
  • 网站开发的业务需求分析微博营销软件
  • 通信工程毕设可以做网站吗东莞网络营销优化
  • 营销型网站建设模板下载优化网站价格
  • php网站维护微博推广费用
  • 做投票页面什么网站好谷歌推广开户多少费用
  • dede系统做的网站如何调用cu3er官网flash 3d焦点图网销怎么做才能做好
  • 医美的网站主页怎么做全网品牌推广公司
  • 做货源网站可以赚钱吗企业官网推广
  • 网站上传工具上海十大营销策划公司排名
  • 怒江网站制作宁波seo推广优化公司
  • 学校网站建设哪家好高端网站定制设计
  • 建模网站精准客源
  • 做网站的基本功关键词优化步骤简短
  • 营销型网站怎么收费小程序开发流程
  • 风景网页制作模板2022年搜索引擎优化指南
  • 朝阳网站建设推广北仑seo排名优化技术
  • 什么推广方式能快速引流seo计费系统源码