我是靠谱客的博主 鲜艳流沙,最近开发中收集的这篇文章主要介绍3、Flink支持的数据类型前言一、基础数据类型二、Java和Scale元组(Tuples)三、Scala样例类(case class)四、Java简单对象(POJOs)五、其它,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Flink支持的数据类型

  • 前言
  • 一、基础数据类型
  • 二、Java和Scale元组(Tuples)
  • 三、Scala样例类(case class)
  • 四、Java简单对象(POJOs)
  • 五、其它

前言

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

一、基础数据类型

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

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

二、Java和Scale元组(Tuples)

Scala中天生就自带元组类型,而Java中的元组类型由Flink提供,默认提供Tuple0~Tuples25共计26个元组类型,数字分别代表参数个数。
例如:

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

三、Scala样例类(case class)

		case class Person(name:String,age:Int)
		​
		val numbers: DataStream[(String,Integer)] = env.fromElements(
		  Person("张三",12),
		  Person("李四"23)
		)

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

Flink中要使用Java中的对象,就要求Java类中必须有空参构造方法,同时类的变量为public或者private,如果为private,还必须提供set和get方法。

五、其它

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

最后

以上就是鲜艳流沙为你收集整理的3、Flink支持的数据类型前言一、基础数据类型二、Java和Scale元组(Tuples)三、Scala样例类(case class)四、Java简单对象(POJOs)五、其它的全部内容,希望文章能够帮你解决3、Flink支持的数据类型前言一、基础数据类型二、Java和Scale元组(Tuples)三、Scala样例类(case class)四、Java简单对象(POJOs)五、其它所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部