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

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

相关推荐
西西学代码几秒前
Flutter---DragTarget(颜色拖拽选择器)
前端·javascript·flutter
小光学长几秒前
基于Vue的地铁综合服务管理系统7949eg04(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Yeats_Liao8 分钟前
时序数据库系列(二):InfluxDB安装配置从零搭建
数据库·后端·时序数据库
Yeats_Liao8 分钟前
时序数据库系列(一):InfluxDB入门指南核心概念详解
数据库·后端·时序数据库·db
阿蓝灬34 分钟前
React中的stopPropagation和preventDefault
前端·javascript·react.js
天天向上102436 分钟前
vue3 抽取el-dialog子组件
前端·javascript·vue.js
lecepin41 分钟前
AI Coding 资讯 2025-11-05
前端·javascript
前端小咸鱼一条1 小时前
17.React获取DOM的方式
前端·javascript·react.js
冴羽1 小时前
看了下昨日泄露的苹果 App Store 源码……
前端·javascript·svelte
betazhou1 小时前
Oracle ADG ,DGBroker管理,异常断电重启主备库的状态
数据库·oracle·goldengate·dgbroker