首页 > 解决方案 > 在哪里可以找到独立的输出

问题描述

我有以下 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)


  }

}

标签: apache-flink

解决方案


在每台 taskmanager 机器的日志目录中,您应该找到 *.log 和 *.out 文件。无论您的作业打印什么,都将转到 .out 文件。这是 Web UI 中每个任务管理器的“stdout”选项卡中显示的内容——尽管如果这个文件非常大,浏览器可能难以获取和显示它。

更新:显然 Flink 的批处理环境处理打印与流式处理不同。当我使用 CLI 提交此批处理作业时,输出会出现在终端中,而不是像流式作业那样出现在 .out 文件中。

我建议您更改示例以在最后执行类似的操作以将结果收集到文件中:

...
sum.writeAsText("/tmp/test")
env.execute()

推荐阅读