не удалось найти неявное значение для параметра доказательства

Я пишу простую задачу по подсчету слов, но продолжаю получать эту ошибку:

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")
    }
}

person sidd607    schedule 26.06.2016    source источник
comment
Попробуйте ответить на этот вопрос, он может вам тоже помочь: stackoverflow.com/questions/29540121/   -  person richj    schedule 26.06.2016
comment
Я импортировал все необходимые библиотеки, включая flink.api.scala._ и flink.streaming.api.scala._   -  person sidd607    schedule 26.06.2016
comment
Проблема в том, что нет метода groupBy (...) для DataStream [(String, Int)] во flink (версия 1.0.3). Существует метод keyBy (Int), который создает KeyedStream [(String, Int), Tuple].   -  person richj    schedule 28.06.2016
comment
Не могли бы вы удалить import flink.api.scala._, потому что потоковая передача, а также пакетный объект пакета scala импортируются createTypeInformation. Так что этот импорт может конфликтовать.   -  person Till Rohrmann    schedule 28.06.2016


Ответы (2)


Вы должны импортировать

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

чтобы включить неявное преобразование вместо создания неявного значения для каждого используемого типа.

person Yasarcan Yilmaz    schedule 18.05.2019

Добавление этого: 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")
    }
}
person Community    schedule 17.07.2017