import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}
import org.apache.flink.streaming.api.windowing.time.Time
object WorldCountForSocket {
def main(args: Array[String]): Unit = {
//定义 socket port
// val port: Int = try {
// ParameterTool.fromArgs(args).getInt("port")
// }
// catch {
// case e: Exception => {
// System.err.println("no port specified. ")
// return
// }
// }
case class WordWithCount(world: String, count: Long)
val port: Int = 9999
// 获取运行环境
val evn: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
// 连接 socket获取数据
val text = evn.socketTextStream("mini1", port, '\n')
// 导入隐式转换
import org.apache.flink.api.scala._
// 解析数据,分组,窗口,聚合sum
val wcSum: DataStream[WordWithCount] = text
.flatMap { w => w.split("\\s") }
.map { w => WordWithCount(w, 1) }
.keyBy("world")
// 处理时间,翻滚窗口
.timeWindow(Time.seconds(5), Time.seconds(3))
.sum("count")
//输出
wcSum.print().setParallelism(1)
evn.execute("Socket Window WordCount")
}
}
flink WC socket 单词统计
最新推荐文章于 2023-04-19 11:02:04 发布