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")):提取该日期是当年的第几周

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

相关推荐
q***465213 小时前
Win10下安装 Redis
数据库·redis·缓存
p***924815 小时前
深入理解与实战SQL IFNULL()函数
数据库·sql·oracle
q***816417 小时前
MySQL:数据查询-limit
数据库·mysql
p***924817 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
JIngJaneIL19 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
晚风吹人醒.19 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
Y***985119 小时前
DVWA靶场通关——SQL Injection篇
数据库·sql
Yawesh_best19 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
蒋士峰DBA修行之路19 小时前
实验二十八 SQL PATCH调优
数据库·sql·gaussdb
芳草萋萋鹦鹉洲哦20 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui