博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flink支持的数据类型
阅读量:4097 次
发布时间:2019-05-25

本文共 1365 字,大约阅读时间需要 4 分钟。

一、简介

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

Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息,从而获取序列化器和反序列化器。但是,在某些情况下,例如lamda函数或泛型类型,需要显式地提供类型信息,才能使应用程序正常工作或提高其性能。
Flink支持Java和Scala中所有常见数据类型。使用最广泛的类型有以下几种。

二、支持的数据类型

2.1 基础数据类型

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

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

2.2 Java和Scala元组(Tuples)

DataStream
> 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
persons = env.fromElements( new Person("Alex", 42), new Person("Wendy", 23));

2.5 其他类型

Array,List,Map、Enum等等。

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

转载地址:http://huxii.baihongyu.com/

你可能感兴趣的文章
Linux的SOCKET编程 简单演示
查看>>
正则匹配函数
查看>>
Linux并发服务器编程之多线程并发服务器
查看>>
聊聊gcc参数中的-I, -L和-l
查看>>
[C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
查看>>
C语言内存检测
查看>>
Linux epoll模型
查看>>
Linux select TCP并发服务器与客户端编程
查看>>
Linux系统编程——线程池
查看>>
基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
查看>>
Linux 线程信号量同步
查看>>
C++静态成员函数访问非静态成员的几种方法
查看>>
类中的静态成员函数访问非静态成员变量
查看>>
C++学习之普通函数指针与成员函数指针
查看>>
C++的静态成员函数指针
查看>>
Linux系统编程——线程池
查看>>
yfan.qiu linux硬链接与软链接
查看>>
Linux C++线程池实例
查看>>
shared_ptr简介以及常见问题
查看>>
c++11 你需要知道这些就够了
查看>>