2024-04-13 13:58:35
21
0
0
使用Table API处理有界数据流
Written by 黄俊仁,2024/04/13
首先创建一个Java的POJO类NBUOrder,如下所示:
package org.nbubigdata.flink.Pojo;public class NBUOrder { //定义类的属性 public Long id; public String product; public int amount; //无参构造方法 public NBUOrder() { } //有参构造方法 public NBUOrder(Lon
2024-04-13 13:59:17
30
0
0
使用WindowAll定义全局窗口
Written by 黄俊仁,2024/04/13
如下示例代码在一个全局窗口(不分组)的基础上计算每个窗口内接收到的单词总数。它首先从自定义数据源 NBUSource 中接收字符串流,然后利用 Tokenizer 类将每条字符串拆分成单词,并生成包含单词和计数(初始化为1)的元组。这些元组随后通过 windowAll 方法被收集进一个固定时间长度(5秒)的滚动窗口中,窗口内的所有元素计数被累加起来,以计算出该时间段内的单词总数。
package org.nbubigdata.flink;import org.apache.flin
2024-04-13 14:00:04
31
0
0
使用Window对无界数据流进行时间分窗
Written by 黄俊仁,2024/04/13
如下示例用于统计从自定义数据源 NBUSource 中接收到的单词出现的次数。通过使用 Splitter 类实现的 flatMap 方法,程序将接收到的字符串拆分成单词,并为每个单词创建一个包含单词和计数 1 的元组。接着,它通过 keyBy 方法按单词分组,并应用了一个基于时间的窗口(每 5 秒一个窗口),在这个窗口内对每个单词的出现次数进行累加。
package org.nbubigdata.flink;import org.apache.flink.api.common
2024-04-13 13:53:04
30
0
0
使用keyBy对无界数据流进行分区
Written by 黄俊仁,2024/04/13
如下示例实现了一个动态单词计数功能。程序从自定义数据源 NBUSource 接收一个连续的字符串流,然后通过实现的 Tokenizer 类将每个字符串拆分成单词,并为每个单词生成一个包含单词本身和初始计数 1 的元组。这些元组随后根据单词(元组的第一个元素)进行分组,对每个组内的计数(元组的第二个元素)进行累加,以此计算出每个单词在流中出现的总次数。
package org.nbubigdata.flink;import org.apache.flink.api.common.fu
2024-04-13 14:01:29
29
0
0
多流处理
Written by 黄俊仁,2024/04/13
这个程序展示了如何在 Apache Flink 中使用 connect 操作符将两个不同的数据流连接起来,并通过 CoMapFunction 分别对这两个流的元素进行处理。每个流的数据通过 NBUSource 产生,并分别加上前缀 "Stream1: " 和 "Stream2: " 来区分来源,最后将处理过的数据统一输出到控制台。这个示例演示了 Flink 处理多源数据流并在单个作业中应用不同逻辑的能力。
package org.nbubigdata.flink;import org.apache.flin
2024-04-13 13:49:15
14
0
0
相关配置
Written by 黄俊仁,2024/04/13
本文档中后续提及的所有示例程序均基于以下Maven项目配置。该配置文件中包括了对Apache Flink的依赖,确保示例程序能够在Flink环境中顺利编译和执行。请确保项目pom.xml文件包含以下核心元素:
Apache Flink依赖:包括用于Java API、流处理、表API以及SQL执行的Flink组件。
Maven Shade Plugin:用于创建包含所有必需依赖的"uber-jar",以简化部署和执行过程。
确保开发环境满足以下条件:
Java 8
Maven 3.6(或以上版本)
A