apache-flink - 在哪里可以找到独立的输出
问题描述
我有以下 flink 工作计数,当我在 IDE 中运行它时,它会正确打印字数,如下所示
(hi,2)
(are,1)
(you,1)
(how,1)
但是当我在集群中运行它时,我没有找到输出。
1. Start cluster using start-cluster.sh
2. Open the webui at http://localhost:8081
3. In the Submit new Job page, Submit the jar, and then input the entry class and then click the Submit button to submit the job
4. The job is done successfully, but I didn't find the output in the TaskManager or JobManager Logs on the UI.
我会问我在哪里可以找到输出
字数统计应用程序是:
import org.apache.flink.api.scala.ExecutionEnvironment
import org.apache.flink.api.scala._
/**
* Wordcount example
*/
object WordCount {
def main(args: Array[String]) {
val env = ExecutionEnvironment.getExecutionEnvironment
val data = List("hi", "how are you", "hi")
val dataSet = env.fromCollection(data)
val words = dataSet.flatMap(value => value.split("\\s+"))
val mappedWords = words.map(value => (value, 1))
val grouped = mappedWords.groupBy(0)
val sum = grouped.sum(1)
sum.collect().foreach(println)
}
}
解决方案
在每台 taskmanager 机器的日志目录中,您应该找到 *.log 和 *.out 文件。无论您的作业打印什么,都将转到 .out 文件。这是 Web UI 中每个任务管理器的“stdout”选项卡中显示的内容——尽管如果这个文件非常大,浏览器可能难以获取和显示它。
更新:显然 Flink 的批处理环境处理打印与流式处理不同。当我使用 CLI 提交此批处理作业时,输出会出现在终端中,而不是像流式作业那样出现在 .out 文件中。
我建议您更改示例以在最后执行类似的操作以将结果收集到文件中:
...
sum.writeAsText("/tmp/test")
env.execute()
推荐阅读
- python - 如何使用 seaborn 绘制带有多个条形的 barchat
- woocommerce - 如何从 WooCommerce 产品页面中删除品牌
- java - 将自定义项目添加到 Android 共享表?
- python - 如何使用 for 循环将各种 csv 文件读入数据帧并将其全部附加在一起
- sql - 用逗号替换点 SQL
- python - 使用 Elastichsearch Python 客户端时出现 ConnectionError
- typescript - 如何循环一个对象并将键和值推入另一个对象
- c# - 使用Regex从C#中的一个表中获取3条信息
- javascript - 在同一数组中组合来自不同对象的值 - javascript
- r - 如何修改 ggplot2 图例键?