Spark

Spark从入门到精通61:Dataset的action操作

2020-07-13  本文已影响0人  勇于自信

action操作有:collect、count、first、foreach、reduce、show、take
下面详细介绍其作用:
collect:将分布式存储在集群上的分布式数据集(比如dataset),中的所有数据都获取到driver端来
count:对dataset中的记录数进行统计个数的操作
first:获取数据集中的第一条数据
foreach:遍历数据集中的每一条数据,对数据进行操作,这个跟collect不同,collect是将数据获取到driver端进行操作,foreach是将计算操作推到集群上去分布式执行
reduce:对数据集中的所有数据进行归约的操作,多条变成一条,用reduce来实现数据集的个数的统计
show:默认将dataset数据打印前20条
take:从数据集中获取指定条数
代码操作案例

package session

import org.apache.spark.sql.SparkSession

object ActionOperation {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .appName(ActionOperation.getClass.getName)
      .master("local")
      .config("spark.sql.warehouse.dir","d:/spark-warehouse")
      .getOrCreate()
    import spark.implicits._
    val employee = spark.read.json("data\\depart\\employee.json")
    employee.collect().foreach(println)
    println(employee.count())
    println(employee.first())
    employee.foreach{println(_)}
    println(employee.map(employee=>1).reduce(_+_))
    employee.show()
    employee.take(3).foreach(println(_))
  }

}

输出结果:

第1个action输出:
[25,1,male,Leo,20000]
[30,2,female,Marry,25000]
[35,1,male,Jack,15000]
[42,3,male,Tom,18000]
[21,3,female,Kattie,21000]
[30,2,female,Jen,28000]
[19,2,female,Jen,8000]
第2个action输出:
7
第3个action输出:
[25,1,male,Leo,20000]
第4个action输出:
[25,1,male,Leo,20000]
[30,2,female,Marry,25000]
[35,1,male,Jack,15000]
[42,3,male,Tom,18000]
[21,3,female,Kattie,21000]
[30,2,female,Jen,28000]
[19,2,female,Jen,8000]
第5个action输出:
7
第6个action输出:
+---+-----+------+------+------+
|age|depId|gender|  name|salary|
+---+-----+------+------+------+
| 25|    1|  male|   Leo| 20000|
| 30|    2|female| Marry| 25000|
| 35|    1|  male|  Jack| 15000|
| 42|    3|  male|   Tom| 18000|
| 21|    3|female|Kattie| 21000|
| 30|    2|female|   Jen| 28000|
| 19|    2|female|   Jen|  8000|
+---+-----+------+------+------+
第7个action输出:
[25,1,male,Leo,20000]
[30,2,female,Marry,25000]
[35,1,male,Jack,15000]
上一篇下一篇

猜你喜欢

热点阅读