Flink的流批统一

Flink依赖,1.13版本

在项目的 pom 文件中,增加标签设置属性,然后增加标签引 入需要的依赖。我们需要添加的依赖最重要的就是 Flink 的相关组件,包括 flink-java、 flink-streaming-java,以及 flink-clients(客户端,也可以省略)。另外,为了方便查看运行日志, 我们引入 slf4j 和 log4j 进行日志管理。

这里做一点解释: 在属性中,我们定义了,这指代的是所依赖的 Scala 版本。这有一点 奇怪:Flink 底层是 Java,而且我们也只用 Java API,为什么还会依赖 Scala 呢?这是因为 Flink 的架构中使用了 Akka 来实现底层的分布式通信,而 Akka 是用 Scala 开发的。

    <properties>
        <flink.version>1.13.0</flink.version>
        <java.version>1.8</java.version>
        <scala.binary.version>2.12</scala.binary.version>
        <slf4j.version>1.7.30</slf4j.version>
    </properties>

    <dependencies>
        <!-- 引入 Flink 相关依赖================开始============================================-->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <!-- 引入 Flink 相关依赖================结束============================================-->
        <!-- 引入 Flink 本地模式查看Web界面================开始===================================-->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-runtime-web_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency
### Flink 一体架构概述 Flink 支持处理批处理的一体化,这使得开发人员可以在同一框架下高效地处理不同类型的数据。无论是式数据还是式数据,都可以直接或经过简单加工后存入统一存储中[^3]。 #### 架构特点 - **计算同源与存储同源**:整个一体的架构实现了计算同源存储同源,这意味着无论是在模式还是模式下运行的任务,都能共享相同的输入输出资源以及中间状态。 - **灵活的数据接入方式**:对于单纯离线或者实时集成需求而言,利用 Apache Flink 生态系统能够便捷地完成跨平台间资料传输工作;特别是针对实时应用场景下的变更数据捕获 (Change Data Capture),即所谓的 Flink CDC 功能更是提供了强大的支持来达成存量加增量同步的效果[^1]。 #### 实现机制 为了达到上述目标,在技术层面上采取了一系列措施: - 数据转路径设计合理,MySQL 的二进制日志文件会被发送到 Kafka 队列里作为消息队列的一部分参与后续程; - 当涉及到在线业务逻辑时,Kafka 中的消息会被即时消费并写回到另一个名为“事件中心”的组件里面去; - 而当执行的是量任务的时候,则是从这个“事件中心”读取之前已经积累下来的信息来进行进一步分析处理[^4]。 ```python from pyflink.dataset import ExecutionEnvironment from pyflink.table import BatchTableEnvironment, StreamTableEnvironment # 创建环境实例 env = ExecutionEnvironment.get_execution_environment() batch_t_env = BatchTableEnvironment.create(env) stream_exec_env = StreamExecutionEnvironment.get_execution_environment() stream_t_env = StreamTableEnvironment.create(stream_exec_env) ``` 以上代码展示了如何分别创建用于批处理处理的不同类型的 Table Environment 对象。需要注意的是,虽然这里展示的例子是 Python API ,但在实际生产环境中更多时候会采用 Java 或 Scala 编程语言编写应用程序[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值