CEP示例的简单Scala API don';不显示任何输出

CEP示例的简单Scala API don';不显示任何输出,scala,apache-flink,flink-streaming,flink-cep,Scala,Apache Flink,Flink Streaming,Flink Cep,我正在编写一个简单的示例,用于在Flink中测试新的Scala API for CEP,使用最新的Github版本进行1.1-SNAPSHOT测试 模式只是对值的检查,并输出单个字符串作为每个匹配模式的结果。代码如下: val pattern : Pattern[(String, Long, Int), _] = Pattern.begin("start").where(_._3 < 4) val cepEventAlert = CEP.pattern(streamingAlert, p

我正在编写一个简单的示例,用于在Flink中测试新的Scala API for CEP,使用最新的Github版本进行1.1-SNAPSHOT测试

模式只是对值的检查,并输出单个字符串作为每个匹配模式的结果。代码如下:

val pattern : Pattern[(String, Long, Int), _] = Pattern.begin("start").where(_._3 < 4)

val cepEventAlert = CEP.pattern(streamingAlert, pattern)

def selectFn(pattern : mutable.Map[String, (String, Long, Int)]): String = {
    val startEvent = pattern.get("start").get
    "Alerta:"+startEvent._1+": Pattern"
}

val patternStreamSelected = cepEventAlert.select(selectFn(_))

patternStreamSelected.print()
在“开始”阶段后的第一个where()上显示错误。我尝试使用以下命令显式设置参数类型:

(x: (String, Long, Int)) => x._3 < 4
(x:(String,Long,Int))=>x.\u 3<4
这样它会再次编译,但当它在Flink上运行时,就不会显示输出。StreamingAlert是Scala数据流[(String,Long,Int)],在代码的其他部分,我可以使用
.\u4
进行过滤,没有问题,输出似乎正确。

流式API中的
print()
API调用不会触发紧急执行。您仍然需要在程序结束时调用
env.execute()

定义模式时,应该在某个地方提供事件类型。您可以按原样操作,也可以通过
begin
的类型参数进行操作:

Pattern.begin[(String, Long, Int)]("start").where(_._3 < 4).next("end").where(_._3 < 4).within(Time.seconds(30))
Pattern.begin[(String,Long,Int)](“start”).where(u._3<4)。next(“end”).where(u._3<4)。在(时间.秒(30))内

env.execute()
被调用,我可以读取其他数据流输出,作业也被列为在web界面中运行,CEP任务显示正在接收数据,但输出为0B。在代码的后面部分,
streamingAlert
使用
DataStream.filter()
进行处理,并且所有操作都似乎正确(在web界面和输出日志中)。唯一无法输出任何元素的是PatternStream。如果我缺少
execute()
调用I supose,那么将根本没有输出。您是否已检查任务管理器的
.out
文件?print语句在TaskManager上执行,因此,输出写入其标准输出文件,而不是JobManager的标准输出文件(除非您启动了本地集群)。
(x: (String, Long, Int)) => x._3 < 4
Pattern.begin[(String, Long, Int)]("start").where(_._3 < 4).next("end").where(_._3 < 4).within(Time.seconds(30))