设置执行环境

image.png
另外,使用Scala API时,应该按照下面的方式引用,否则会出现一些问题。

  1. import org.apache.flink.streaming.api.scala._

java.lang.ClassNotFoundException

错误:

image.png

错误原因


编译部署的时候没有将依赖全部导入,因为本人用的是快速原型导入的maven,里面scope好多是provided的,这样导致依赖在编译的时候无法全部加载,生产环境的话如果已经装好了环境,那么这个在生产上跑是没问题的,但是调试的时候需要将这个勾选,否则会报错!

解决办法

在idea中勾选
image.png

Cannot resolve field [id], input field list:[_c0, _c1].

错误:
image.png

错误重现:

在使用flink的table api将读入的数据转换后写入到输出表时,字段赋值语法前后使用不一样会报以上错误

    val sensorTable = tableEnv.from("inputTable")
    val resultTable = sensorTable
        .select("id","temperature")
        .filter($"id" === "sensor_1")

错误代码在.select("id","temperature")

解决办法

字段语法应该前后保持一致,或者使用'

    val resultTable = sensorTable
        .select($"id",$"temperature")
        .filter($"id" === "sensor_1")

No operators defined in streaming topology. Cannot execute.

image.png
使用table API进行数据输出表时,报错
image.png

解决办法

注意 从 1.11 版本开始,sqlUpdate 方法 和 insertInto 方法被废弃,从这两个方法构建的 Table 程序必须通过 StreamTableEnvironment.execute() 方法执行,而不能通过 StreamExecutionEnvironment.execute() 方法来执行。

使用tableEnv.execute()

使用getClass.getResource()方读取resource文件夹中文件读取不到(抛出异常javanull)

解决办法

将resource文件夹作为资源文件夹
image.png

flink没有输出结果

代码中也有env.execute(“pv job”),但是程序正常运行,却没有输出

错误原因

原来是filter过滤的时候过滤条件写错了(小写写成大写)
image.png

情况二:

运行的程序不是当前程序,运行成了test中的空程序

使用flink的cep的where方法,传递的参数没有

image.png
Cannot resolve symbol eventType
样例类定义如下:
image.png
已经将输入数据转化为样例类

错误原因:

导入的cep.pattern不是Scala的包,而是java的,导致引入的包是import org.apache.flink.cep.pattern.Pattern,根本原因是pom文件导入依赖错误(没有看清导致)
正确依赖如下:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-cep-scala_2.11</artifactId>
    <version>1.11.2</version>
</dependency>

导入后,正确引入包:
import org.apache.flink.cep.scala.pattern.Pattern