无法找到证据参数

时间:2016-06-26 16:58:00

标签: scala apache-flink flink-streaming

我正在写一个简单的单词计数flink作业,但我一直收到这个错误:

could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[String]
[error]  .flatMap{_.toLowerCase.split("\\W+") filter {_.nonEmpty}}

我在网上搜索但无法得到任何可理解的答案。

这是我的代码:

object Job {
  def main(args: Array[String]) {
    // set up the execution environment
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    val dataStream = env.readTextFile("file:///home/plivo/code/flink/scala/flinkstream/test/")

    val count = dataStream
                .flatMap{_.toLowerCase.split("\\W+") filter {_.nonEmpty}}
                .map{ (_,1) }
                .groupBy(0)
                .sum(1)


    dataStream.print()
    env.execute("Flink Scala API Skeleton")
    }
}

2 个答案:

答案 0 :(得分:0)

添加:implicit val typeInfo = TypeInformation.of(classOf[(String)])作为def main(args: Array[String]) {...}的第一行,为我修复了它。

object Job {
  def main(args: Array[String]) {
    implicit val typeInfo = TypeInformation.of(classOf[(String)]) //Add this here
    // set up the execution environment
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    val dataStream = env.readTextFile("file:///home/plivo/code/flink/scala/flinkstream/test/")

    val count = dataStream
                .flatMap{_.toLowerCase.split("\\W+") filter {_.nonEmpty}}
                .map{ (_,1) }
                .groupBy(0)
                .sum(1)


    dataStream.print()
    env.execute("Flink Scala API Skeleton")
    }
}

答案 1 :(得分:0)

您必须导入

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

启用隐式转换,而不是为所使用的每种类型创建隐式值。