Flink Socket WordCount常见异常及解决方案
一.代码实现
package cn.socket import org.apache.flink.streaming.api.scala._ // 数据类型异常,动态数据引入 // import org.apache.flink.api.scala._ // 数据类型异常,静态数据引入 /** * Created by Administrator on 2020/3/22. */ object SocketWindowWordCount { def main(args: Array[String]) : Unit = { // 指定的IP和接口 val hostname: String = "192.168.136.7" val port: Int = 9001 // 获取流处理环境 val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment // 获取socket计算数据 val text: DataStream[String] = env.socketTextStream(hostname, port, '\n') text.print() // wordcount val windowCounts = text .flatMap { w => w.split("\\s") } .map(w => (w, 1)) .keyBy(_._1) .sum(1) // 设置并行度,打印 windowCounts.print().setParallelism(1) // 执行 env.execute("Socket Window WordCount") } }
二.常见异常
Error:(15, 16) could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[String] .flatMap { w => w.split("\\s") } ^
Error:(15, 16) not enough arguments for method flatMap: (implicit evidence$11: org.apache.flink.api.common.typeinfo.TypeInformation[String])
org.apache.flink.streaming.api.scala.DataStream[String]. Unspecified value parameter evidence$11. .flatMap { w => w.split("\\s") } ^
如图:
原因分析:
在flink中的大部分算子中,并没有默认的隐式类型参数的定义,我们在使用时也没有显式地指定类型,因此会报类型异常。
三.解决方案
import org.apache.flink.streaming.api.scala._ // 数据类型异常,动态数据引入 import org.apache.flink.api.scala._ // 数据类型异常,静态数据引入