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

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

相关推荐
少年姜太公3 小时前
什么?还不知道git cherry pick?
前端·javascript·git
Liu.7746 小时前
vue3使用vue3-print-nb打印
前端·javascript·vue.js
SAP小崔说事儿6 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
dly_blog7 小时前
Vue 逻辑复用的多种方案对比!
前端·javascript·vue.js
川贝枇杷膏cbppg7 小时前
asmcmd
数据库·oracle
wyzqhhhh8 小时前
京东啊啊啊啊啊
开发语言·前端·javascript
JIngJaneIL8 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
IndulgeCui8 小时前
基于CentOS7 DM8单机部署配置记录-20251216
数据库
想学后端的前端工程师8 小时前
【Java集合框架深度解析:从入门到精通-后端技术栈】
前端·javascript·vue.js
surtr18 小时前
关系代数与关系型数据库
数据库·sql·数据库系统