spark

1. select (字段名)

用于从数据集中筛选出需要的特定字段。例如:df.select("name", "age") 会只保留数据中的 "name" 和 "age" 两个字段。

2. show () 与 limit (n)

  • show():默认显示数据集的前 20 条记录,方便快速预览数据
  • show(n):显示数据集的前 n 条记录,如show(10)显示前 10 条
  • limit(n):获取数据集的前 n 条记录,并返回一个新的 DataFrame,如df.limit(5)得到包含前 5 条记录的新数据集

3. filter/where (条件)

用于筛选满足指定条件的记录,两者功能基本相同。例如:

  • df.filter("age > 18") 筛选出年龄大于 18 的记录
  • df.where(col("score") >= 60) 筛选出分数大于等于 60 的记录

4. join (连接操作)

用于将两个数据集按照一定条件合并:

  • join(df):默认进行笛卡尔积连接,会将第一个表的每一行与第二个表的每一行组合,通常不直接使用
  • join(df, 连接条件):根据指定条件连接,如df1.join(df2, df1("id") == df2("user_id"))
  • join(df, 连接条件, 连接类型):指定连接类型,常见类型有 inner (内连接)、left (左连接)、right (右连接)、full (全连接)

5. as (别名)

为数据集或字段起别名,方便后续引用。例如:df.as("user_data") 给数据集起别名;df.select(col("name").as("username")) 给字段起别名

6-7. 分组聚合操作

  • groupBy(字段名):根据指定字段对数据进行分组

  • 分组后可结合以下聚合函数:

    • avg/mean(字段名):计算分组后指定字段的平均值
    • sum(字段名):计算分组后指定字段的总和
    • max(字段名):获取分组后指定字段的最大值
    • min(字段名):获取分组后指定字段的最小值
    • count():统计每个分组的记录条数

    例如:df.groupBy("department").avg("salary") 计算每个部门的平均工资

8. orderBy

对数据按照指定字段进行排序,默认是升序。例如:df.orderBy("age") 按年龄升序排列;df.orderBy(col("score").desc()) 按分数降序排列

9. withColumn

用于新增列或修改已有列:

  • 新增列:df.withColumn("new_column", col("old_column") * 2) 新增一列,值为旧列的 2 倍
  • 修改列:如果指定的列名已存在,则会替换该列的值;也可用于数据类型转换,如df.withColumn("age", col("age").cast("int"))

10. row_number () 窗口函数

用于在分组内对记录进行编号,常与窗口函数结合使用:

plaintext

复制代码
df.withColumn("rank", row_number().over(
    Window.partitionBy("department").orderBy(col("salary").desc())
))

表示按部门分组,在每个部门内按工资降序排列并标记行号

11. withColumnRenamed

用于重命名字段:df.withColumnRenamed("old_name", "new_name") 将字段 "old_name" 重命名为 "new_name"

12. agg (聚合函数)

对整个数据集进行聚合操作,可同时对多个字段进行不同计算:

plaintext

复制代码
df.agg(
    avg("age").alias("avg_age"),
    max("salary").alias("max_salary"),
    min("score").alias("min_score")
)

13. na.drop()

删除数据中包含 NULL 值的行,例如:df.na.drop() 会移除所有含有空值的记录

14. to_date

将字符串类型的字段转换为日期类型:

  • to_date(col("date_str"), "yyyyMMdd") 将 "20231207" 格式的字符串转为日期
  • to_date(col("date_str"), "yyyy-MM-dd") 将 "2023-12-07" 格式的字符串转为日期

15. 日期类型操作

对日期类型字段进行提取:

  • year(col("date")):提取年份
  • month(col("date")):提取月份
  • dayofmonth(col("date")):提取日
  • dayofweek(col("date")):提取星期几(1 表示星期日,7 表示星期六)
  • weekofyear(col("date")):提取该日期是当年的第几周

这些操作可以组合使用,实现复杂的数据处理和分析需求。

相关推荐
xujiangyan_7 小时前
Redis详解
数据库·redis·缓存
黑云压城After9 小时前
H5使用环信实现视频或语音通话
前端·javascript·vue.js
Y编程小白10 小时前
PostgreSQL在Linux中的部署和安装教程
数据库·postgresql
未来之窗软件服务10 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
TiAmo zhang12 小时前
SQL Server 2019实验 │ 数据库和表的创建、修改与删除
数据库·oracle
C+ 安口木13 小时前
vue中监听window某个属性被添加或值的变化
前端·javascript·vue.js
CoderYanger13 小时前
前端基础-HTML入门保姆级课堂笔记
前端·javascript·css·html
赛博切图仔13 小时前
qiankun、micro-app、wujie,2025年我们该选谁?
前端·javascript
disanleya13 小时前
MySQL默认密码不安全?如何首次登录并强化?
数据库·mysql·安全