Flink支持的数据类型

一、简介

Flink流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些对象。它们需要被序列化和反序列化,以便通过网络传送它们;或者从状态后端、检查点和保存点读取它们。为了有效地做到这一点,Flink需要明确知道应用程序所处理的数据类型。Flink使用类型信息的概念来表示数据类型,并且为每个数据类型生成特定的序列化器、反序列化器和比较器。
Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息,从而获取序列化器和反序列化器。但是,在某些情况下,例如lamda函数或泛型类型,需要显式地提供类型信息,才能使应用程序正常工作或提高其性能。
Flink支持Java和Scala中所有常见数据类型。使用最广泛的类型有以下几种。

二、支持的数据类型

2.1 基础数据类型

Flink支持所有的 Java和Scala 基础数据类型,Int、Double、Long、String、…

DataStream<Integer> numberStream = env.fromElements(1,2,3,4);
numberStream.map(data -> data * 2);

2.2 Java和Scala元组(Tuples)

DataStream<Tuple2<String, Integer>> personStream = env.fromElements(
        new Tuple2("Adam", 17),
        new Tuple2("Sarah", 23));
personStream.filter(p -> p.f1 > 18)

2.3 Scala样例类(case classes)

case class Person(name: String, age: Int)
val persons: DataStream[Person] = env.fromElements(
       Person("Adam", 17),
       Person("Sarah", 23))
persons.filter(p => p.age > 18)

2.4 Java简单对象(POJOs)

public class Person {
    public String name;
    public int age;
    // 必须有这个参数为空的构造函数
    public Person(){}
    public Person(String name, int age){
          this.name = name;
          this.age = age;
      }
}

DataStream<Person> persons = env.fromElements(
         new Person("Alex", 42),
         new Person("Wendy", 23));

2.5 其他类型

Array,List,Map、Enum等等。
Flink 对 Java 和 Scala 中的一些特殊目的的类型也都是支持的,比如Java的ArrayList,HashMap,Enum等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值