Flink 流处理 API_支持的数据类型

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

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

Flink 支持 Java 和 Scala 中所有常见数据类型。使用最广泛的类型有以下几种。

 

1 基础数据类型

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

val numbers: DataStream[Long] = env.fromElements(1L, 2L, 3L, 4L) numbers.map( n => n + 1 )

 

2.Java 和 Scala 元组(Tuples)

val persons: DataStream[(String, Integer)] = env.fromElements(  

("Adam", 17),  

("Sarah", 23) )  persons.filter(p => p._2 > 18)

 

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)

 

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)); 

 

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

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

ArrayList,HashMap,Enum 等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据Flink官方文档,Flink处理作业可以分为以下几类: 1. 简单式转换:这种类型的作业包括一些简单的式转换,例如map、filter、keyBy等。这些作业通常只涉及到单个数据,并且可以通过Flink的DataStream API轻松实现。 2. 式聚合:这种类型的作业通常涉及到对数据进行聚合操作,例如sum、min、max等。这些作业可以通过Flink的DataStream API和Table API实现。 3. 式连接:这种类型的作业通常涉及到将多个数据连接在一起,例如join、union等。这些作业可以通过Flink的DataStream API和Table API实现。 4. 式窗口:这种类型的作业通常涉及到对数据进行窗口操作,例如滑动窗口、会话窗口等。这些作业可以通过Flink的DataStream API和Table API实现。 5. 式迭代:这种类型的作业通常涉及到对数据进行迭代操作,例如迭代计算、迭代聚合等。这些作业可以通过Flink的DataStream API和Table API实现。 6. 式机器学习:这种类型的作业通常涉及到对数据进行机器学习操作,例如分类、聚类、回归等。这些作业可以通过Flink的DataStream API和Table API结合机器学习库实现。 7. 式图处理:这种类型的作业通常涉及到对数据进行图处理操作,例如PageRank、连通性等。这些作业可以通过Flink的Gelly库实现。 下面是一个使用Flink的DataStream API实现简单式转换的例子: ```python from pyflink.datastream import StreamExecutionEnvironment env = StreamExecutionEnvironment.get_execution_environment() data = env.from_collection([(1, 'apple'), (2, 'banana'), (3, 'orange')]) result = data.map(lambda x: (x[0], x[1].upper())) result.print() env.execute("simple-transformation") ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值