2.Flink DateStream API

本文介绍了Flink的分布式流处理模型,该模型主要包括输入、处理和输出三部分。Flink作为一个批流一体的数据处理引擎,其核心概念如Flink SQL、Table API和DataStream API的关系进行了阐述。通过一个WordCount的示例展示了如何使用DataStream API,从创建StreamExecutionEnvironment到定义数据源、处理逻辑和输出Sink的完整流程。StreamExecutionEnvironment在Flink中起到关键作用,负责任务调度、数据源管理和优化等。
摘要由CSDN通过智能技术生成

分布式流处理模型

抄的网图,下图就是典型的flink 分布式流处理模型

主要将数据分为三部分,输入,处理,输出三部分。

flink 就是一个批流一体的数据处理引擎和工具。

其中flink sql ,flink table api ,flink date stream 关系如图:

首先类似hadoop wordcount demo,flink 版也来的wordcount,告诉你整体怎么用这个datastreamAPI。

执行这个要包含main方法,和MR类似;实际上,数据处理也和离线差不多,定义数据输入,数据处理,定义数据输出。

        1.对应离线MR,flink 的context 为StreamExecutionEnviroment,和hadoop的元数据类似。

        2.flink的数据输入为dataStream,不同类型的数据定义不同的dataStream,然后使用addSource添加源。

        3.数据处理类似于spark lambda风格。

        4.flink的数据输入为sink,定义sink 也可以addSink来定义。

        5.对应执行要使用env.execute。

其中StreamExecutionEnvironment作用类似sparkSession,

总结一下,负责任务相关的管理,调度,数据源的管理,以及部分优化,包括邮箱芜湖安图的存储和管理,任务提交与运行,缓存数据,数据源等存储与管理等。

作用如下图:

 

 

### 关于 `createTypeInformation` 方法的区别与用法 在 Apache Flink 中,`createTypeInformation` 是用于创建类型信息的方法。此方法对于序列化和反序列化数据至关重要。 #### Scala API 的差异 针对不同模块中的 `createTypeInformation`: - **批处理环境下的 `org.apache.flink.api.scala.createTypeInformation`** 该版本适用于批处理场景,在定义静态数据集时提供支持[^1]。它主要用于非流式的数据操作,例如读取文件或集合并执行转换操作。 ```scala import org.apache.flink.api.scala._ val env = ExecutionEnvironment.getExecutionEnvironment // 使用 createTypeInformation 来推断复杂类型的 TypeInformation case class Person(name: String, age: Int) env.fromElements(Person("Alice", 28), Person("Bob", 30)) .returns(createTypeInformation[Person]) ``` - **流处理环境下的 `org.apache.flink.streaming.api.scala.createTypeInformation`** 相比之下,这个版本专为实时数据流设计,能够更好地适应动态变化的数据源[^2]。当构建基于时间窗口或其他特性依赖的时间敏感型应用程序时尤为有用。 ```scala import org.apache.flink.streaming.api.scala._ val streamEnv = StreamExecutionEnvironment.getExecutionEnvironment streamEnv.setParallelism(1) // 对来自套接字的输入应用映射函数,并指定输出元组的类型信息 streamEnv.socketTextStream("localhost", 9999) .map(x => (x.toInt * 2)).returns(createTypeInformation[(Int)]) .print() ``` 两种方式的主要区别在于适用范围的不同——前者面向批作业而后者则更侧重于持续不断的事件驱动流程。然而两者都提供了自动化的机制来简化开发者的工作量,即无需手动编写复杂的类描述符即可让框架理解自定义对象结构。 值得注意的是,随着 Flink 版本的发展,某些功能可能有所调整;因此建议查阅官方文档获取最新指导说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值