1 Dataset(DataFrame)的基础操作
1.1 有类型操作
分类 | 算子 | 解释 |
---|---|---|
转换 |
|
通过 |
|
|
|
|
|
|
|
|
|
|
|
|
过滤 |
|
|
聚合 |
|
其实这也印证了分组后必须聚合的道理 |
切分 |
|
|
|
|
|
排序 |
|
|
|
其实 |
|
分区 |
|
减少分区, 此算子和 |
|
|
|
去重 |
|
使用 |
|
当 所以, 使用 |
|
集合操作 |
|
|
|
求得两个集合的交集 |
|
|
求得两个集合的并集 |
|
|
限制结果集数量 |
1.2 无类型转换
分类 | 算子 | 解释 |
---|---|---|
选择 |
|
|
|
在 |
|
|
通过 |
|
|
修改列名 |
|
剪除 |
drop |
剪掉某个列 |
聚合 |
groupBy |
按照给定的行进行分组 |
1.3 Column对象
Column 表示了 Dataset 中的一个列, 并且可以持有一个表达式, 这个表达式作用于每一条数据, 对每条数据都生成一个值
分类 | 操作 | 解释 |
---|---|---|
创建 |
|
单引号 |
|
同理, |
|
|
|
|
|
|
|
|
前面的 |
|
|
可以通过
|
|
别名和转换 |
|
|
|
通过 |
|
添加列 |
|
通过 |
操作 |
|
通过 |
|
通过 |
|
|
在排序的时候, 可以通过 |
1.4 缺失值处理
处理 null 和 NaN
删除
- 当某行数据所有值都是 null 或者 NaN 的时候丢弃此行:df.na.drop("all").show()
- 当某行中特定列所有值都是 null 或者 NaN 的时候丢弃此行:df.na.drop("all", List("pm", "id")).show()
- 当某行数据任意一个字段为 null 或者 NaN 的时候丢弃此行:df.na.drop().show() df.na.drop("any").show()
- 当某行中特定列任意一个字段为 null 或者 NaN 的时候丢弃此行:df.na.drop(List("pm", "id")).show() df.na.drop("any", List("pm", "id")).show()
填充
- 填充所有包含 null 和 NaN 的列:df.na.fill(0).show()
- 填充特定包含 null 和 NaN 的列:df.na.fill(0, List("pm")).show()
处理字符串
- 使用函数直接转换非法的字符串
df.select('No as "id", 'year, 'month, 'day, 'hour, 'season,
when('PM_Dongsi === "NA", 0)
.otherwise('PM_Dongsi cast DoubleType)
.as("pm"))
.show()
- 使用 where 直接过滤
df.select('No as "id", 'year, 'month, 'day, 'hour, 'season, 'PM_Dongsi)
.where('PM_Dongsi =!= "NA")
.show()