文章目录
代码
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
输入字符,然后启动程序
 
 
                     
            
        













 
                    

 
                 
                    