flink报错:前回の実行以降、新しいデータシンクが定義されていません

初心者がflinkを学ぶために、IDEAでWordCountコードを記述し、次のようにエラーを実行します。

Exception in thread "main" java.lang.RuntimeException: No new data sinks have been defined since the last execution. The last execution refers to the latest call to 'execute()', 'count()', 'collect()', or 'print()'.
	at org.apache.flink.api.java.ExecutionEnvironment.createProgramPlan(ExecutionEnvironment.java:1092)
	at org.apache.flink.api.java.ExecutionEnvironment.createProgramPlan(ExecutionEnvironment.java:1072)
	at org.apache.flink.api.java.ExecutionEnvironment.executeAsync(ExecutionEnvironment.java:969)
	at org.apache.flink.api.java.ExecutionEnvironment.execute(ExecutionEnvironment.java:891)
	at org.apache.flink.api.scala.ExecutionEnvironment.execute(ExecutionEnvironment.scala:509)
	at com.fuyun.flink.WordCount$.main(WordCount.scala:42)
	at com.fuyun.flink.WordCount.main(WordCount.scala)

コードは次のように表示されます。

package com.fuyun.flink

// 因为很多算子Java和Scala名称都一样,必须要显示导入scala所有包告知使用Scala语言的算子,不然会报错
import org.apache.flink.api.scala._

object BatchWordCount {
    
    

  def main(args: Array[String]): Unit = {
    
    

    // 定义输入输出文件路径
    val input = "E:\\IDEAworkspace\\flinkLearning\\datas\\WordCount"

    // 创建一个批处理的执行环境
    val env:ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    // 读取离线文件
    val inputDataSet:DataSet[String] = env.readTextFile(input)

    // 对离线文件单词统计,不区分大小写
    val counts = inputDataSet.flatMap(_.toLowerCase.split("\\s")) // 对元素转换为小写再进行分割
      .filter(_.nonEmpty) // 过滤空值
      .map((_, 1))  // 将元素组合成二元组
      .groupBy(0)  // 对第一个元素进行分组
      .sum(1)  // 对第二个元素求和

     // 控制台答应结果
     counts.print()
     
     // 调用execute方法执行
     env.execute("bath word count")

  }
}

問題の原因と解決策:
エラーログから、最後の実行以降、新しいデータレシーバーが定義されていないことがわかります。「count()」、「collect()」、「print()」などのオフラインバッチ演算子には、シンク関数とトリガー関数の両方があります。
上記のprint()メソッドを呼び出しました。これは自動的に実行をトリガーするため、エグゼキュータの最後の行には実行するデータがありません。したがって、コードの最後の行を削除するだけで、print()メソッドを使用した後にexecute()メソッドを呼び出す必要はありません。

おすすめ

転載: blog.csdn.net/lz6363/article/details/112575146