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得执行流程,并行度或者任务链等等后面慢慢都会涉及到

浙公网安备 33010602011771号