设置执行环境

另外,使用Scala API时,应该按照下面的方式引用,否则会出现一些问题。
import org.apache.flink.streaming.api.scala._
java.lang.ClassNotFoundException
错误:
错误原因
编译部署的时候没有将依赖全部导入,因为本人用的是快速原型导入的maven,里面scope好多是provided的,这样导致依赖在编译的时候无法全部加载,生产环境的话如果已经装好了环境,那么这个在生产上跑是没问题的,但是调试的时候需要将这个勾选,否则会报错!
解决办法
在idea中勾选
Cannot resolve field [id], input field list:[_c0, _c1].
错误重现:
在使用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.
解决办法
注意 从 1.11 版本开始,sqlUpdate 方法 和 insertInto 方法被废弃,从这两个方法构建的 Table 程序必须通过 StreamTableEnvironment.execute() 方法执行,而不能通过 StreamExecutionEnvironment.execute() 方法来执行。
使用tableEnv.execute()
使用getClass.getResource()方读取resource文件夹中文件读取不到(抛出异常javanull)
解决办法
将resource文件夹作为资源文件夹
flink没有输出结果
代码中也有env.execute(“pv job”),但是程序正常运行,却没有输出
错误原因
原来是filter过滤的时候过滤条件写错了(小写写成大写)
情况二:
运行的程序不是当前程序,运行成了test中的空程序
使用flink的cep的where方法,传递的参数没有

Cannot resolve symbol eventType
样例类定义如下:
已经将输入数据转化为样例类
错误原因:
导入的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

