文章目录


代码

import org.apache.flink.api.java.utils.ParameterTool
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment

object StreamingWordCount {
/*
args中传递参数 : --host note01 --port 7777
*/

def main(args: Array[String]): Unit = {
//从外部命令中获取参数
val tool = ParameterTool.fromArgs(args)
val host = tool.get("host")
val port = tool.get("port").toInt

//创建流环境
val env = StreamExecutionEnvironment.getExecutionEnvironment
//接受socket文本流
val textDstream = env.socketTextStream(host, port)
// flatMap和Map需要引用的隐式转换
import org.apache.flink.api.scala._
val rs = textDstream.flatMap(_.split(" ")).filter(_.nonEmpty)
.map((_, 1))
.keyBy(0) //实时这里使用的是keyBy不是groupBy flink是有状态的,keyBy保存了状态,状态默认在内存中
.sum(1)

rs.print()

//执行
env.execute()
}
}

linux

[root@note01 ~]# nc -lk 7777

输入字符,然后启动程序