1.withCoumn添加修改列
.withColumn("etl_date", etl_date)
-
.withColumn()
方法:- 这是 Spark DataFrame 中用于添加新列或修改现有列的方法。
- 它接受两个参数,第一个参数是新列的名称或要修改的现有列的名称,第二个参数是用于计算新列值的表达式
2.where(condition)筛选指定条件
.where(condition)
condition
是一个布尔类型的表达式,用于指定筛选条件
-
条件筛选
- 可以根据特定的条件筛选出符合要求的行。条件可以是基于列的值进行比较、逻辑运算等。
- 例如,可以筛选出年龄大于 30 的人,或者筛选出特定城市的居民。
3.limit()限制返回行数
.limit(n)
.limit(n)
方法用于限制查询数据中的行数,只返回前 n
行数据。
4.show()数据预览
.show()
-
数据预览
- 可以快速查看 DataFrame 中的数据,以便了解数据的结构和内容。
- 对于小规模数据集,可以直接查看全部数据;对于大规模数据集,可以显示前几行数据。
5.gropby()分组操作
.gropBy()
.groupBy()
方法用于对 DataFrame 中的数据进行分组操作
数据聚合
- 根据指定的列对数据进行分组,然后可以对每个组应用聚合函数,如求和、平均值、计数等。
- 例如,可以根据客户 ID 对销售数据进行分组,然后计算每个客户的总销售额、平均购买金额等
6.orderBy()排序操作
.orderBy()
.orderBy()
方法用于对 DataFrame 中的数据进行排序操作
-
数据排序
- 根据指定的列对数据进行升序或降序排列。可以指定一个或多个列作为排序的依据。
- 例如,可以按照年龄升序排列人员数据,或者按照销售额降序排列销售记录。
7.partitionBy()分区操作
.partitionBy()
.partitionBy()
方法用于对数据进行分区操作,通常在写入数据到文件系统(如 Hive 表、Parquet 文件等)时使用,也可在一些特定的操作中提高性能
数据分布优化
- 将数据按照指定的列进行分区,使得具有相同分区键值的数据存储在同一个物理分区中。这样可以在查询和处理数据时,减少数据的读取量,提高性能。
8.agg()聚合函数
.agg()
多列聚合
- 可以同时对多个列应用不同的聚合函数,一次性计算多个统计指标。
- 例如,可以计算一组数据中不同列的总和、平均值、最大值、最小值等
可以是内置的聚合函数(如sum
、avg
、max
、min
等)
.agg(
count()
max()
min()
avg()
)
9.row_number() over(Window.partitionBy().orderBy())添加行号
row_number() over(Window.partitionBy().orderBy())
此方法的作用是为行添加行号
注意:row_number() over(Window.)不能单独使用,需要搭配其他方法使用
此方法的作用是为某分区内为排序字段添加行号
10.drop()删除列
.drop()
-
去除不需要的列
- 当数据集中存在一些不需要进行分析或处理的列时,可以使用
drop
方法将其删除,以减少数据的维度和存储空间。 - 例如,如果一个数据集中包含了一些敏感信息的列或者与当前分析任务无关的列,可以将其删除,以保护数据安全或提高分析效率。
- 当数据集中存在一些不需要进行分析或处理的列时,可以使用
11.select选择列
.select()
.select("id","name","rating")
的作用是指定要从数据源中选择的列。
具体来说,它告诉数据库查询引擎只返回指定的 “id”“name” 和 “rating” 这三个字段的数据,而不是返回所有字段的数据。
12.date_sub减去天数
date_sub(startDate, days)
其中,startDate
是一个日期列或日期表达式,表示要进行减法运算的起始日期。days
是一个整数,表示要减去的天数。
13.时间戳转换为字符串
1.date_format()
date_format(date,format)
date_format
函数:这个函数通常用于将日期时间类型的数据按照指定的格式进行转换。
2024 年 10 月 17 日会被格式化为 “20241017”
date
:要被格式化的日期时间值,可以是一个日期时间类型的列名、表达式或者具体的日期时间值。format
:指定的格式化字符串,用于定义输出的日期时间格式。
2.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
2024 年 10 月 17 日会被格式化为 “20241017”
3.LocalDate.now().minusDays()
LocalDate.now().minusDays()
LocalDate.now()
:这会返回当前的日期,不包含时间信息。.minusDays(n)
:这里的n
是一个整数,表示要减去的天数。这个方法会返回一个新的LocalDate
对象,代表减去指定天数后的日期。
14.字符串转换为时间戳
to_timestamp($"create_time","yyyyMMddHHmmss")
在 Spark SQL 中,to_timestamp($"create_time","yyyyMMddHHmmss")
是一个用于将字符串类型的时间值转换为时间戳类型的表达式。
to_timestamp
函数:这个函数接受两个参数。第一个参数是要转换为时间戳的列表达式,这里是$"create_time"
,表示名为 “create_time” 的列。第二个参数是时间字符串的格式,这里是 “yyyyMMddHHmmss”,表示年(四位数)月(两位数)日(两位数)时(两位数)分(两位数)秒(两位数)的格式。"create_time"
列:假设这是一个包含字符串类型时间值的列,例如 “20241017123456” 表示 2024 年 10 月 17 日 12 时 34 分 56 秒。