Flink入门二之Flink支持的数据类型

编程入门 行业动态 更新时间:2024-10-22 17:32:04

Flink入门二之Flink支持的<a href=https://www.elefans.com/category/jswz/34/1768302.html style=数据类型"/>

Flink入门二之Flink支持的数据类型

Flink 支持的数据类型

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

关系图

基础数据类型

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

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

java和Scala元组

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

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)

Java 简单对象(POJOs)

  • 必须要有无参数构造器
  • 成员变量要么是public,要么是private(必须提供getter setter)
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));

其它(Arrays,Lists,Maps,Enums,等等)

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

更多推荐

Flink入门二之Flink支持的数据类型

本文发布于:2023-07-28 20:51:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1308149.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据类型   入门   Flink

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!