flink-10 DataSet算子

本文详细介绍了Flink中DataSet的常用转换算子,包括map、flatmap、mapPartition、filter、reduce、aggregate、distinct等。还讨论了连接操作如join、outerJoin、cross,以及first-N和sortPartition的用法。最后提到了partition和Flink的官方文档链接。
摘要由CSDN通过智能技术生成

常见的DataSet转换算子算子

  • Map

    • 输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作
  • FlatMap

    • 输入一个元素,可以返回零个,一个或者多个元素
  • MapPartition

    • 类似map,一次处理一个分区的数据【如果在进行map处理的时候需要获取第三方资源链接,建议使用MapPartition】
  • Filter

    • 过滤函数,对传入的数据进行判断,符合条件的数据会被留下
  • Reduce

    • 对数据进行聚合操作,结合当前元素和上一次reduce返回的值进行聚合操作,然后返回一个新的值
  • Aggregate

    • sum、max、min等
  • Distinct

    • 返回一个数据集中去重之后的元素,data.distinct()
  • Join

    • 内连接
  • OuterJoin

    • 外链接
  • Cross

    • 获取两个数据集的笛卡尔积
  • Union

    • 返回两个数据集的总和,数据类型需要一致
  • First-n

    • 获取集合中的前N个元素
  • Sort Partition

    • 在本地对数据集的所有分区进行排序,通过sortPartition()的链接调用来完成对多个字段的排序

mapPartition

import org.apache.flink.api.scala.{
   DataSet, ExecutionEnvironment}
import scala.collection.mutable.ArrayBuffer
object map {
   
  def main(args: Array[String]): Unit = {
   
      val environment: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
      import org.apache.flink.api.scala._

      val arrayBuffer = new ArrayBuffer[String]()
      arrayBuffer.+=("hadoop")
      arrayBuffer.+=("flink")
      val collectionDataSet: DataSet[String] = environment.fromCollection(arrayBuffer)

      val resultPartition: DataSet[String] = collectionDataSet.mapPartition(eachPartition => {
   
        eachPartition.map(eachLine => {
   
          val returnValue = eachLine + " result"
          returnValue
        })
      })
      resultPartition.print()

    }

}

在这里插入图片描述

distinct

distinct会将整个dataset中的数据进行去重

import org.apache.flink.api.scala.ExecutionEnvironment
import scala.collection.mutable.ArrayBuffer

object distinct {
   
  def main(args: Array[String]): Unit = {
   
    val environment: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    import org.apache.flink.api.scala._

    val arrayBuffer = new ArrayBuffer[String]()
    arrayBuffer.+=("hello world1")
    arrayBuffer.+=("hello world2")
    arrayBuffer.+=("hello world3")
    arrayBuffer.+=("hello world4")

    val collectionDataSet: DataSet[String] = environment.fromCollection(arrayBuffer)
    val dsDataSet: DataSet[String] = collectionDataSet.flatMap(x => x.split(" ")).distinct()
    dsDataSet.print()
  }
}

输出
在这里插入图片描述

链接操作

join

  • 取交集,两边都存在的数据才会被保留
import org.apache.flink.api.scala.ExecutionEnvironment
import scala.collection.mutable.ArrayBuffer

object join {
   
  def main(args: Array[String]): Unit = {
   
    val environment: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment

    import org.apache.flink.api.scala._
    val array1 = ArrayBuffer((1,"张三"),(2,"李四"),(3,"王五"))
    val array2 =ArrayBuffer((1,"15"),(4,"20"),(3,"25"))

    val firstDataStream: DataSet[(Int, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值