Spark dataset api 列表 & 练习

本文详细介绍了Spark 2.2版本中Dataset API的各种操作,包括groupBy、agg、sortWithinPartition、sort、OrderBy等,提供了丰富的使用示例,帮助开发者理解和掌握Spark Dataset API。
摘要由CSDN通过智能技术生成

背景

Spark版本:2.2

DataSet API网址:http://spark.apache.org/docs/2.2.1/api/java/org/apache/spark/sql/Dataset.html

正文

1.groupBy()

a.使用方法

按照某几列元素进行分组

dataset.groupBy("columnName","columnName")
dataset.groupBy(dataset("columnName"))

b.注意事项

      运算完成之后,返回的不是普通的DataSet数据类型,而是org.apache.spark.sql.RelationalGroupedDataset

      org.apache.spark.sql.RelationalGroupedDataset可是用的方法有max、min、agg和sum等少量函数

c.使用举例

logDS.groupBy("userID").max()

2.agg() 

a.使用方法

dataset 聚合函数api,有多种列名的传入方式,使用as,可是重新命名,所有计算的列sum、avg或者distinct都会成为新的列,默认列明sum(columnName),常常跟在groupBy算子后使用

 dataset.agg(sum(dataset("columnsName")),sum(dataset("")).as("newName"))
 dataset.agg(sum("columnsName"),avg("columnsName").as("newName"))

b.注意事项

   如果想要使用更多的内置函数,请引入: import org.apache.spark.sql.functions._

   计算完会生成新的列,所以一般放了方便后期使用,会进行重命名

c.使用举例

   经长和groupBy后使用,对同一group内的数据操作

logDs.groupBy("userID").agg(max("consumed"),max("logID"))

3.sortWithinPartition()

a.使用方法

在分区内部进行排序,执行完成后,分区内部有序

dataset.sortWithinPartitions("columnName1","columnName2")

b.注意事项

     一般在调用改方法之前,会按照规则将数据重新分区,否则没有意义

     调用之后可以接foreachPartition()遍历每一个分区

     但是奇怪的是,我没有查到dataset相关分区的方法,只有rdd(key-value)才有分区的能力,所以,这个方法的使用意义和环

     境暂时还不清楚,使用的频率也较低

c.使用举例     

personsDS.sortWithinPartitions("name").mapPartitions(it=>{
      it.toList.reverse.iterator
})

4.sort()

a.使用方法

按照某几列进行排序

dataset.sort(dataset("name"),dataset("age").desc
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值