Flink入门(一)

Flink是标准得实时流计算框架,比起Spark Streaming得微批处理实现得流计算,Flink才是最原生最标准得实时处理,Flink得文档啊介绍啊啥的网上有的是我就不写了,简单得写一些大数据学习起点必学得项目《WordCount》

此外,既然讲到WordCount,就要说数据分为有界和无界,有界就是读一个确定的文本,wordcount之后程序结束;无界就是源源不断地word输入,没有边界


 

无界(流计算)

 

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

object WordCount_Streaming {

    def main(args: Array[String]): Unit = {
        // 创建流处理环境
        val env = StreamExecutionEnvironment.getExecutionEnvironment
   // 设置并行度   env.setParallelism(8) // 接收 socket 文本流 val textDstream = env.socketTextStream("192.168.6.21", 8765) //wordcount val dataStream = textDstream .flatMap(_.split(" ")) .filter(_.nonEmpty) .map((_, 1)) .keyBy(0) .sum(1) dataStream.print() env.execute("Socket stream word count") } }


上述得无界是socket文本流实现得,启动程序之前先将指定机器得socket打开,然后启动程序,然后socket窗格输入文本内容即可(Linux下执行nc -lk 8765即可)


有界

import org.apache.flink.api.scala.{AggregateDataSet, DataSet, ExecutionEnvironment}
import org.apache.flink.streaming.api.scala._

object WordCount_Batch {
    def main(args: Array[String]): Unit = {
        //创建执行环境
        val env = ExecutionEnvironment.getExecutionEnvironment

        //从文件中读取
        val inputPath = "C:\\Users\\IdeaProjects\\" +
                "flinktestlearn\\src\\main\\resources\\hello.txt"
        val inputDS: DataSet[String] = env.readTextFile(inputPath)

        val wordCountDS: AggregateDataSet[(String, Int)] = inputDS
                .flatMap(_.split(" "))
                .map((_, 1))
                .groupBy(0)
                .sum(1)

        wordCountDS.print()
    }
}

 

入门得项目主要就是熟悉一下Scala语法,Flink得执行流程,并行度或者任务链等等后面慢慢都会涉及到

 

 

 

 

 

 

 

 

 

posted @ 2020-09-02 13:19  wen1995  阅读(153)  评论(0编辑  收藏  举报