java - IntelliJ 中 Flink WordCount 输出中的数字
问题描述
我正在学习 Apache Flink,并通过 IntelliJ 中的 Maven 集成它。我从 GitHub 尝试了这个 WordCount 示例:来自 GitHub 的 WordCount 示例
我只是调整了输入文本。
产生输出的代码的主要部分是:
DataStream<Tuple2<String, Integer>> counts =
// split up the lines in pairs (2-tuples) containing: (word,1)
text.flatMap(new Tokenizer())
// group by the tuple field "0" and sum up tuple field "1"
.keyBy(value -> value.f0)
.sum(1);
// emit result
if (params.has("output")) {
counts.writeAsText(params.get("output"));
} else {
System.out.println("Printing result to stdout. Use --output to specify output path.");
counts.print();
}
// execute program
env.execute("Streaming WordCount");
我在 IntelliJ 中得到以下输出
4> (name,1)
4> (years,1)
3> (hello,1)
3> (twice,1)
5> (the,1)
2> (i,1)
6> (my,1)
2> (am,1)
6> (florian,1)
7> (old,1)
2> (thirteen,1)
6> (word,1)
8> (is,1)
8> (is,2)
6> (florian,2)
6> (written,1)
所以我有两个问题:
“$NUMBER>”符号代表什么?这些是我的 Apache Flink 集群的工作人员的 ID 吗?哪一行代码执行此操作以及如何在输出中摆脱它们?在文档中找不到它。
与文本一样,“florian”一词在输出中出现了两次。这是由于子任务被写入输出吗?所以每次增加一个字数,新的字数就会写入输出?是否可以聚合这些,以便只写入最终计数?
我知道这些是非常基本的问题,但我对 Apache Flink 以及一般的分布式处理框架也是新手,但我热衷于学习它。所以提前谢谢!:)
解决方案
WordCoiunt 是流媒体空间中的“hello world”。
- NUMBER 显示重复次数
- “florian”在您的输入中出现两次,第一次显示为 (florian,1),第二次出现在 (florian,2) 如果您在输入中添加另一个“florian” flink 将计数并显示 (florian,3)
推荐阅读
- java - 用 log4j2 覆盖日志行
- php - laravel 路由问题语法错误,意外 'opis' (T_STRING),期待 ')'
- bootstrap-4 - 如何使用 Bootstrap 制作三个相等的 div?
- python - Pandas dropna 和过滤
- unity3d - 将更改应用到 3 个项目?
- javascript - Javascript:如果 POST 响应正常,请在 google 工作表中设置一个单元格为“Okay”,否则更新“false”
- scala - Twitter Streaming API - flink/spark 应用程序中的低输入率
- iis - IIS 反向代理和源服务器之间的客户端证书身份验证
- c# - GET 请求中的 Dto 永远不会出现 null
- javascript - 将 Javascript 对象格式化为新数组