Flink -- 支持数据类型/UDF函数

Flink 支持的数据类型Flink 流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些的对象,他们需要被序列化和反序列化,以便通过网络传送他们,或者从状态后端,检查点和保存点读取他们。为了有效地做到这一点,Flink需要明确知道应用程序所处理的数据类型.Flink使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器,反序列化器和比较器。Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息。从而获得序列化器和反序列化器。但
摘要由CSDN通过智能技术生成

Flink 支持的数据类型

Flink 流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些的对象,他们需要被序列化和反序列化,以便通过网络传送他们,或者从状态后端,检查点和保存点读取他们。为了有效地做到这一点,Flink需要明确知道应用程序所处理的数据类型.Flink使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器,反序列化器和比较器。

Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息。从而获得序列化器和反序列化器。但是,在某些情况下,例如lambda函数或范型类型,需要显式地提供类型信息,才能使应用程序正常工作或者提高其性能。

flink支持Java和Scala中所有常见数据类型,使用最广泛的有:

  1. 基础数据类型:支持Java和Scala基础数据类型
  2. Java和Scala元组:Tuple0~Tuple25.可以传入的类型数量
  3. Scala样例类:case calss Person(name:String,age:Int)
  4. Java简单对象:实现get/set方法,必须提供无参构造函数
  5. 其他:(Arrays,List,Maps,Enums等。)Flink对Java和Scala中的一些特殊目的类型也都是支持的,比如Java的ArrayList,HashMap,Enum等。

Fllink UDF函数 — 更细粒度的控制流

  1. 函数类

    Flink暴露了所有udf函数的接口(实现方式为接口或者抽象类)。例如MapFunction,FilterFunction,ProcessFunction等。

    案例

    • 实现FilterFunction接口

      DataStream<String> flinkTweets = tweets.filter(new FlinkFilter());
      
      public static class FlinkFilter implements FilterFunction<String>{
             
      	@Override
      	public boolean filter(String value) throws Exception{
             
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值