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

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

相关推荐
muddjsv1 天前
大中小型企业数据层配置规模分析与选型指南
数据库
Runawayliquor1 天前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
yangshicong1 天前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
chimchim661 天前
pg dblink使用查询
数据库
Java面试题总结1 天前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
kyriewen1 天前
写组件文档写到吐?我用AI自动生成Storybook,同事以后直接抄
前端·javascript·面试
绝知此事1 天前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树
五点六六六1 天前
你敢信这是非Native页面写出来的渐变效果吗🌝(底层原理解析
前端·javascript·面试
吴可可1231 天前
用Teigha修改并保存CAD文件
数据库·算法·c#
吃西瓜的年年1 天前
TypeScript
javascript·ubuntu·typescript