flink 入门学习 wordcount

概述:

Apache Flink 是一个流处理和批处理的开源框架,用于处理无界和有界数据流。如果你想要使用 Flink 来统计文本中文字的数量(例如,字符数、单词数或行数),你可以通过 Flink 的 DataSet API(对于批处理)或 DataStream API(对于流处理)来实现。

以下是一个简单的示例,说明如何使用 Flink 的 DataSet API 来统计文本文件中单词的数量:

1、设置运行环境

java 复制代码
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

2、读取文本信息

java 复制代码
DataSet<String> text = env.readTextFile("path/to/your/textfile.txt");

3、分割单词数量

java 复制代码
// 分割文本并生成单词  
DataSet<Tuple2<String, Integer>> wordCounts = text  
    .flatMap(new Tokenizer())  
    .groupBy(0)  
    .sum(1);  
  
// Tokenizer 是一个简单的 FlatMapFunction,用于将文本分割成单词  
public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {  
    @Override  
    public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {  
        // normalize and split the line into words  
        String[] tokens = value.toLowerCase().split("\\W+");  
  
        // emit the pairs  
        for (String token : tokens) {  
            if (token.length() > 0) {  
                out.collect(new Tuple2<>(token, 1));  
            }  
        }  
    }  
}

注意:上述代码是统计单词数量的示例。如果你想要统计字符数或行数,你需要相应地修改 Tokenizer 类和后续的处理步骤。

4、执行并输出结果

使用 print 方法将结果输出到控制台,或使用 writeAsText 方法将结果写入文件:

java 复制代码
// 执行并输出结果  
wordCounts.print();  
  
// 或者将结果写入文件  
wordCounts.writeAsText("path/to/output/file", WriteMode.OVERWRITE);  
  
// 触发执行  
env.execute("WordCount");

这只是一个简单的示例,用于说明如何使用 Flink 的 DataSet API 来统计文本中的单词数量。根据你的具体需求(例如,统计字符数或行数),你需要相应地修改代码。

相关推荐
isfox14 分钟前
日志数据链路的 “搬运工”:Flume 分布式采集的组件分工与原理
大数据
rannn_11123 分钟前
【Linux学习|黑马笔记|Day3】root用户、查看权限控制信息、chmod、chown、快捷键、软件安装、systemctl、软连接、日期与时区
linux·笔记·后端·学习
我怕是好41 分钟前
学习STM32 脉冲计数实验
stm32·嵌入式硬件·学习
百胜软件@百胜软件1 小时前
百胜软件×华为云联合赋能,“超级国民品牌”海澜之家新零售加速前行
大数据·华为云·零售
蒋星熠1 小时前
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
android·大数据·开发语言·c++·python·mysql·系统架构
广东小68 小时前
【昇腾】关于Atlas 200I A2加速模块macro0配置3路PCIE+1路SATA在hboot2中的一个bug_20250812
学习·性能优化
朱小弟cs611 小时前
Orange的运维学习日记--41.Ansible基础入门
linux·运维·学习·ci/cd·自动化·ansible·devops
时序数据说12 小时前
时序数据库为什么选IoTDB?
大数据·数据库·物联网·开源·时序数据库·iotdb
future141213 小时前
串口通信学习
学习
Hello.Reader13 小时前
Elasticsearch JS 客户端子客户端(Child Client)实践指南
大数据·javascript·elasticsearch