作用:展示数据
show(numRows:Int,truncate:Boolean)
show(numRows:Int)
numRows:表示展示的行数(默认展示20行)
Truncate:只有两个取值true,false,表示一个字段是否最多显示20个字符,默认为true
作用:获取一个dataframe的里面的数据 形成的是一个数组
注意:返回的是一个array 适用于数据量比较小的场景
作用:获取一个dataframe里面的数据,形成的是一个list集合
注意:返回的是一个list 适用于数据量小的场景
作用:获取指定字段的统计信息
personDF.describe("age").show()
+-------+------------------+
|summary | age|
+-------+------------------+
| count(记录条数) | 3|
| mean(平均值) |16.333333333333332|
| stddev(样本标准差)|2.3094010767585034|
| min(最小值) | 15|
| max(最大值) | 19|
+-------+------------------+
作用:获取若干行记录
用法:
frist():获取第一行记录 ,返回一个row对象
head(n:Int):获取前n行记录 ,返回一个Array对象
take(n:Int):获取前n行记录,返回一个Array对象
takeAsList(n:Int):获取前n行记录,返回一个List对象
注意点:take和takeAsList方法会将获取的数据返回到Driver中,所以要注意数据量,避免Driver发生OutOfMemoryError
用法:
where(conditionExpr:String)
例如:df.where("name='jack' or age=10")
作用:条件相关
where(condition:Column)
例如:df.where($"age">20)
注意点:在例子中出现的$"age"提取age列数据作比较时,要用到隐式转换
作用:根据字段进行筛选
用法:
filter(conditionExpr:String)
filter(condition:Column)
注意点:
filter跟where用法基本一致
select
作用:获取指定字段值
用法:
select(col:String)
select(col:Column)
注意点:
select(col:Column)这种方式可以实现df.select($"colA",$"colB"+1)
selectExpr()
作用:可以对指定字段进行特殊处理
用法:
df.selectExpr(exprs:String*)
例如:df.selectExpr("colA","colB as newName","abs(colC)")
注意点:
返回DataFrame对象
col()
作用:获取指定字段
用法:
col(colName:String)
注意点:
只能获取一个字段,返回对象为Column
apply()
作用:获取指定列
用法:
apply(colName:Stirng)
注意点:
只能获取一个字段,返回对象为Column
drop()
作用:去除指定字段,保留其他字段
用法:
drop(colName:String)
drop(colName:Column)
注意点:
返回一个新的DataFrame对象,其中不包含去除的字段,一次只能去除一个字段
作用:排序操作
用法:
orderBy(sortExprs:Column*)
orderBy(sortCol : String , sortCols : String*)
注意点:
按指定字段排序,默认是升序。也支持多个字段的排序,返回的是DataFrame
注意点:
按指定字段排序,默认是升序。也支持多个字段的排序,返回的是DataFrame
作用:排序操作
用法:
sort(sortExprs:Column*)
sort(sortCol : String , sortCols : String*)
注意点:
按指定字段排序,默认是升序。也支持多个字段的排序,返回的是DataFrame
作用:分区内排序
用法:
sortWithinPartitions(sortExprs:Column*)
sortWithinPartitions(sortCol : String , sortCols : String*)
注意点:
和sort方法功能类似,区别在于sortWithinPartitions方法返回的是排好序的每一个partition的DataFrame
作用:进行分组
groupby(col1:String,cols:String*)
groupby(cols:Column*)
注意点:
groupby之后得到的是RelationalGroupedDataset类型对象,API提供了group by之后的操作,max( ),min( ), mean( ) ,sum( ) ,Count( )
作用:去重操作(去除重复行)
用法:
distinct()
注意点:
返回一个不包含重复ROW记录的DataFrame
agg
作用:聚合操作
用法:
agg(aggExpr:(String,String),aggExprs:(String:String)*)
例如:df.agg("age"->"mean","phone"->"max").show()
注意点:
一般与groupby方法配合使用,也可以单独使用
agg(
max($"ORG_NO") as "ORG_NO", //供电单位编号
max($"ORG_TYPE") as "ORG_TYPE", //供电单位类型
max($"GRID_NO") as "GRID_NO", // 网格编号
max($"GRID_NAME") as "GRID_NAME", //网格名称
max($"STAT_DATE") as "STAT_DATE" //统计日期
)
union
作用:合并操作
用法:
union(other:Dataset)
注意点:
union方法对两个字段一致的DataFrame进行组合,返回一个新的DataFrame
join
作用:连接操作
用法:
①join(right:Dataset,usingColumn:String)
②join(right:Dataset,usingColumn:Seq[String])
③join(right:Dataset,usingColumn:Seq[String],joinType:String)
④join(right:Dataset,joinExprs:Column)
⑤join(right:Dataset,joinExprs:Column,joinType:String)
注意点:
第①②的区别在于①表示一个字段的String,后者表示多个字段Seq(序列)
intersect
作用:获取两个DataFrame中共有的记录
用法:
例如:df.intersect(df.limit(1))
注意点:
except
作用:获取一个DataFrame中有另一个DataFrame中没有的记录
用法:
例如:df.except(df.limit(1))
withColumn
作用:往当前DataFrame中新增一列
用法:
例如:df.withColumn(“age*2”,df("age")*2)
withColumn(colName:String,col:Column)
注意点:
col该列可来源于本身DataFrame对象,不可以来自其他的DataFrame
withcloumn里面也可以写对这个所加字段的判断等操作
na 作用:对具有空值列的行数据进行处理
用法:drop()
例如:df.na.drop()
删除所有具有空值列的行
例如:df.na.drop(Array("sex"))
删除sex列具有空值的行
fill()
例如:df.na.fill(Map("age",2))
将age列的空值替换成2
将age列的空值替换成2
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020101123421627.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Nhcm5hdGlvbl9z,size_16,color_FFFFFF,t_70#pic_center)
##### 21 lit 和 exper
```scala
作用:对于特定的列进行处理
lit 一般给个特定的的值给所需要的字段
exper 表示可以对字段 进行特殊的处理
可以写case ....when
作用:对于一个特定的列进行处理
pivot函数(透视函数)
dataDF.select(date_add($"date",2) as "add_date").show()
dataDF.select(add_months($"date",2) as "add_month").show()
dataDF.select($"date",date_add($"date",2) as "add_date").select(datediff($"add_date",$"date") as "diff_number").show()
dataDF.select(dayofmonth($"date") as "day_date").show()
dataDF.select(weekofyear($"date") as "weekofyear").show()
dataDF.select(to_date($"date")).show()