栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

循序渐进大数据组件之--Flink

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

循序渐进大数据组件之--Flink

最近学习了Flink,做一些小的总结:(预计这个我会出一个系列)

先来看看Flink是什么:(出自官网)

Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink 已经可以扩展到数千核心,其状态可以达到 TB 级别,且仍能保持高吞吐、低延迟的特性。世界各地有很多要求严苛的流处理应用都运行在 Flink 之上。

接下来,我们来介绍一下Flink中的几个重要概念。


批与流

批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。

流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。 

概念差不多就先这么多,我们来看看Flink的hellowrld是什么样:

maven的依赖:


	org.apache.flink
	flink-scala_2.11
	1.7.2



	org.apache.flink
	flink-streaming-scala_2.11
	1.7.2

插件:


	
		
		
			net.alchim31.maven
			scala-maven-plugin
			3.4.6
			
				
					
					
						testCompile
					
				
			
		
		
			org.apache.maven.plugins
			maven-assembly-plugin
			3.0.0
			
				
					jar-with-dependencies
				
			
			
				
					make-assembly
					package
					
						single
					
				
			
		

		
			org.scala-tools
			maven-scala-plugin
			2.15.2
			
				
					
						compile
						testCompile
					
				
			
		
	

批处理:

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

//做批处理word count 程序
object WordCount {

  def main(args: Array[String]): Unit = {
    //创建执行环境
    val env = ExecutionEnvironment.getExecutionEnvironment
    //从文件中读取数据
    val inputPath = "E:\src\main\resources\hello.txt"
    val inputDataSet = env.readTextFile(inputPath)

    //切分数据得到word,然后再按照word做分组聚合
    val wordCountDataSet = inputDataSet.flatMap(_.split(" "))
      .map((_,1))
      .groupBy(0)
      .sum(1)

    wordCountDataSet.print()

  }

}

流处理代码:

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

//做流处理word count 程序
object WordCountStream {

  def main(args: Array[String]): Unit = {
    //创建流处理的执行环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    //val env = StreamExecutionEnvironment.createRemoteEnvironment("192.168.*.*",8099)

    //接收一个socket文件流
    val dataSteam = env.socketTextStream("192.168.*.*",8989)

    //对每条数据进行处理
    val wordCountDataStream = dataSteam.flatMap(_.split(" "))
      .filter(_.nonEmpty)
      .map((_,1))
      .keyBy(0)
      .sum(1)

    //打印
    //wordCountDataStream.print().setParallelism(3)
    wordCountDataStream.print()

    //启动executor
    env.execute("stream job count job")
  }
}

大数据组件笔记 -- Flink_L小Ray想有腮的博客-CSDN博客_大数据组件flink

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号