Flink之wordcount

小编初学flink,看到各大论坛上有各种不同版本的,有一些还运行不了,小编就参照官网写了一个

pom文件是这样的

<dependencies>
    
    <dependency>
        <groupId>org.apache.flinkgroupId>
        <artifactId>flink-scala_2.11artifactId>
        <version>1.6.1version>
    dependency>
    <dependency>
        <groupId>org.apache.flinkgroupId>
        <artifactId>flink-streaming-scala_2.11artifactId>
        <version>1.6.1version>
    dependency>
    
    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-nopartifactId>
        <version>1.7.2version>
     dependency>
dependencies>

scala代码

object WordCount {
  def main(args: Array[String]): Unit = {

    //获取运行环境
    val env= ExecutionEnvironment.getExecutionEnvironment

    //获取数据
    val text = env.readTextFile("E:\\Learning\\log.txt")

    //必须写,不写下面代码会报错  
    import org.apache.flink.api.scala._

    val counts = text.flatMap(_.toLowerCase.split("\\W+")filter(_.nonEmpty))
      .map((_,1))
      .groupBy(0)
      .sum(1)
    counts.print()

  }
}

其中遇到了两个错误

1、写flatMap时代码报错

解决方案,加上

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

官网解释: https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/types_serialization.html#type-information-in-the-scala-api

2、程序能执行,但是控制台报错(强迫症)
slf4j报错
官网的解释

This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

解决方案:在Maven工程的pom文件中随便加上依赖就可以了

    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-nopartifactId>
        <version>1.7.2version>
     dependency>

你可能感兴趣的:(flink,flink,wordcount,flink单词统计)