自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 flink-22 flink复杂事物处理机制CEP

flink复杂事物处理机制CEPCEP概念CEP的主要特点Pattern API输入流的创建Pattern的定义设置循环次数定义触发条件模式序列注意Pattern检测选取结果通过select抽取正常事件通过flatSelect抽取正常事件通过select抽取延迟事件CEP示例使用state实现使用CEP编程实现官网CEP概念CEP是Complex Event Processing三个单词的缩写,表示复杂事件处理,是一种基于流处理的技术,CEP是Flink专门为我们提供的一个基于复杂事件监测处理的库,C

2020-09-30 11:29:02 733

原创 flink-21 flink之table和SQL

flink之table和SQLtable与SQL的基本介绍为什么需要SQL开发环境构建TableEnvironmentTable API创建 Table从文件中创建 Table(静态表)从DataStream中创建 Table(动态表)**table与SQL的基本介绍在Spark中有DataFrame这样的关系型编程接口,因其强大且灵活的表达能力,能够让用户通过非常丰富的接口对数据进行处理,有效降低了用户的使用成本。Flink也提供了关系型编程接口 Table API 以及基于Table API 的

2020-09-28 20:43:03 2002

原创 flink-20 watermark机制

watermark机制watermark概念watermark作用watermark原理watermark使用的三种情况watermark概念通常情况下由于网络或者系统等外部因素影响下,事件数据往往不能及时传输至FLink系统中,导致系统的不稳定而造成数据乱序到达或者延迟达到等问题,因此需要有一种机制能够控制数据处理的进度。具体来讲,在创建一个基于时间的window后,需要确定属于该window的数据元素是否已经全部到达,确定后才可以对window中的所有数据做计算处理(如汇总、分组),如果数据并没

2020-09-25 22:49:52 324

原创 flink-19 flink之Time概念

flink之Time概念flink中Time的概念EventTimeIngestTimeProcessingTime(默认时间)三种时间的综合比较设置 Time 类型示例:ProcessWindowFunction实现时间确定flink中Time的概念对流失数据处理,最大的特点是数据上具有时间的属性特征flink根据时间产生的位置不同,可以将时间区分为三种时间概念Event Time(事件生成时间)事件产生的时间,它通常由事件中的时间戳描述Ingestion time(事件接入时间)

2020-09-24 20:04:08 156

原创 flink-18 flink之windows窗口

flink之windows窗口概念窗口的类型滚动窗口(tumbling windows)滑动窗口(sliding windows)会话窗口窗口(session windows)窗口应用示例窗口数据的集合统计增量聚合统计7.3.2 全量聚合统计概念把数据想象成一种流,窗口在流上滑动,显示指定时间段或指定个数的数据。即windows是一种可以把无限无数据切割为有限数据块的手段应用场景对于流式处理,如果我们需要求取总和,平均值,或者最大值,最小值等,是做不到的,因为数据一直在源源不断的产生,即数据是没有

2020-09-24 16:24:08 293

原创 flink-17 flink集成kafka

flink集成kafka前言kafka作为flink的sourcekafka作为flink的sinkpom依赖官网前言Flink提供了一个特有的kafka connector去读写kafka topic的数据。flink消费kafka数据,并不是完全通过跟踪kafka消费组的offset来实现去保证exactly-once的语义,而是flink内部去跟踪offset和做checkpoint去实现exactly-once的语义,而且对于kafka的partition,Flink会启动对应的并行度去处理ka

2020-09-24 01:44:14 867

原创 flink-16 checkpoint

checkpointcheckpoint概念checkpoint的前提checkpoint步骤配置checkpoint重启策略从checkpoint恢复数据checkpoint保存多个历史版本save checkpoint保存数据checkpoint概念为了保证state的容错性,flink需要对state进行checkpointcheckpoint是flink实现容错机制最核心的功能,它能根据配置周期性的基于Stream各个operator/task的状态来生成快照,从而将这些状态数据定期持久化存储

2020-09-23 22:18:58 724 1

原创 flink15 flink状态管理之state backend

flink状态管理之state backendState Backend设置方法:MemoryStateBackendFsStateBackendRocksDBStateBackend3种方式小结修改state-backend的两种方式State Backend默认情况下state会保存在TaskManager的内存中checkpoint会存储在JobManager的内存中state的存储和checkpoint的取决于State Backend的配置。Flink提供了3种State Backe

2020-09-23 11:57:21 1257 1

原创 flink-14 flink之State类型

flink之Statestate概述state类型operator statekey statestate概述state一般指一个具体的task/operator的状态,state数据默认保存在java的堆内存中。flink通过state和checkpoint更容易实现At -least-once 和 Exactly-oncestate流程state类型flink有两种基本类型的stateoperator statekeyed state每种类型的state都可以以两种形式存在

2020-09-22 22:50:30 2088 1

原创 flink-13 Flink之Counter(计数器/累加器)

Flink之Counter概念用法示例概念Accumulator即累加器,与Mapreduce counter的应用场景差不多,都能很好地观察task在运行期间的数据变化,可以在Flink job任务中的算子函数中操作累加器,但是只能在任务执行结束之后才能获得累加器的最终结果。Counter是一个具体的累加器(Accumulator)实现IntCounter, LongCounter 和 DoubleCounter用法1.创建累加器private IntCounter numLines =

2020-09-21 20:59:52 2191

原创 flink-12 flink分布式缓存

flink分布式缓存概念用法概念Flink提供了一个类似于hadoop分布式缓存,可以使用户在并行函数中很方便的读取本地文件。广播变量是将一些共享的数据放在TaskManager内存中而Distribute cache是从外部加载一个文件/目录(例如hdfs),然后分别复制到每一个TaskManager的本地磁盘中。用法1.使用Flink运行环境调用registerCachedFile注册一个分布式缓存env.registerCachedFile("hdfs:///path/to/your

2020-09-21 20:45:26 727 1

原创 flink-11 dataSet之集成HBASE读写数据

dataSet之connector文件系统connectorflink集成Hbase数据读取flink读取数据,然后写入HBase官网地址文件系统connectorfink内置支持从如下文件系统读取数据文件系统Schema备注HDFShdfs://Hdfs文件系统S3s3://通过hadoop文件系统实现支持MapRmaprfs://需要用户添加jarAlluxioalluxio://通过hadoop文件系统实现注意Flink允许用户

2020-09-21 19:58:26 1195

原创 flink-10 DataSet算子

dataset转换算子常见的DataSet转换算子算子mapPartitiondistinct链接操作joinleftOuterJoin、rightOuterJoincrossfirst-N和sortPartitionpartition官网地址常见的DataSet转换算子算子Map输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作FlatMap输入一个元素,可以返回零个,一个或者多个元素MapPartition类似map,一次处理一个分区的数据【如果在进行map

2020-09-21 14:47:34 363

原创 flink-9 广播变量

flink广播变量概念用法示例概念广播变量允许编程人员在每台机器上保持一个只读的缓存变量,而不是传送变量的副本给tasks广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的一句话解释,可以理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份。如果不使用broadcast,则在每个节点中的每个t

2020-09-21 00:44:47 132

原创 flink-8 重分区算子

重分区算子重分区算子种类Random PartitioningRebalancingRescaling示例:对filter后的数据进行重分区定义分区广播变量重分区算子种类重分区算子用来对数据进行重新分区,可以用来解决数据倾斜问题Random Partitioning根据均匀分布随机分配元素,(类似于random.nextInt(3),0 - 3 在概率上是均匀的)dataStream.shuffle()Rebalancing分区元素循环,每个分区创建相等的负载。数据发生倾斜的时候可以

2020-09-20 19:29:10 1528

原创 flink-7 DataFrame转换算子

DataFrame转换算子前言map、filterflatMapflatMap、keyBy、Sumreduce流的合并和拆分流的合并unionconnect流的拆分split、select官网地址前言通过从一个或多个 DataStream 生成新的 DataStream 的过程被称为 Transformation 操作。在转换过程中,每种操作类型被定义为不同的 OperatorFlink 程序能够将多个 Transformation 组成一个 DataFlow 的拓扑map、filterim

2020-09-20 16:11:58 664

原创 flink-6 flinksink目标和写数据到Redis中

flink写数据到RedisFlink的Sink数据目标Flink写数据到Redis中pom依赖Flink的Sink数据目标writeAsText():将元素以字符串形式逐行写入,这些字符串通过调用每个元素的toString()方法来获取print() / printToErr():打印每个元素的toString()方法的值到标准输出或者标准错误输出流中自定义输出addSink【kafka、redis】我们可以通过sink算子,将我们的数据发送到指定的地方去,例如kafka或者redis或者hb

2020-09-19 18:08:27 651

原创 flink-5 flink的DataSource数据源

flink的DataSource数据源基于文件基于socket基于集合自定义输入基于文件object txt { def main(args: Array[String]): Unit = { //构建流处理的环境 val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment //从socket获取数据 val sourceStream: DataSt

2020-09-18 12:43:30 288

原创 flink 单词计数demo

单词计数demo单词计数实时统计-scala实时统计-java离线统计pom依赖单词计数实时统计每隔1秒统计最近2秒单词出现的次数实时统计-scala代码/导入scala版本的import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}import org.apache.flink.streaming.api.windowing.time.Timeobject onLine {

2020-09-17 22:05:16 581

原创 flink-4 并行度

flink并行度flink并行度并行度的设置并行度代码示例flink并行度一个Flink程序由多个任务组成(source、transformation和 sink)。 一个任务由多个并行的实例(线程)来执行, 一个任务的并行实例 (线程) 数目就被称为该任务的并行度。不同任务的并行度可以不同不同算子的并行度可以不同默认情况下:相邻的并行度相同的transformation算子的task会自动组成一个任务链所以,在不涉及宽依赖的时候,相邻的算子最好并行度相同。涉及到数据的本地性,并行度不同,会

2020-09-17 20:17:37 287

原创 flink-3 flink on yarn

flink on yarn前言第一种模式yarn session模式任务的提交第二张模式yarn-cluster模式下任务的提交指令参数flink on yarn运行原理flink on yarn部署前言flink可以提交都不同集群,提交到yarn上只是其中一种比较常见的选择。flink on yarn有两种模式yarn sessionyarn cluster其区别主要资源的申请和释放第一种模式内存集中管理模式(yarn session)在Yarn中初始化一个Flink集群,开辟指

2020-09-17 18:55:31 724

原创 flink-2 task之间传输数据方式、操作链和任务槽

操作链和任务槽操作链任务链的关闭任务槽操作链操作链即任务链(不同场景下称呼不同)是将相关性很强的transformation操作绑定在一起,这样能够让转换过程中上下游的 Task 在同一个 Pipeline 中执行,进而避免因为数据在网络或者线程间传输导致的开销,提高整体的吞吐量和延迟。如下图所示:将身处同一个TaskManager的key agg和sink绑定到一起。从而使原来的4个task变为2个task任务链类似于spark中的管道,spark将同一分区、同一债依赖的task分配给一个tas

2020-09-17 17:48:41 1698

原创 flink-1 flink简介

flink简介有界数据和无界数据flink应用场景flink优势flink基本技术栈flink基本架构有界数据和无界数据有界数据通常被称为批处理既定义了数据流的开始,也定义了数据流的结束。处理有界数据时,既可以等所有数据都接收完再处理,也可以处理此刻前的所有数据。有界流数据可以被排序,所以处理的时候不需要有序的提取无界数据有数据流的开始,但是没有数据流的结束。处理无界数据时,不能等到所有数据都接收完再处理,数据会无休止的产生,需要立即处理无界数据处理时一般需要根据特定的顺序提取数据

2020-09-17 17:24:01 201

原创 sparkSQL sparkSQL自定义函数

sparkSQL自定义函数sparkSQL自定义函数代码sparkSQL自定义函数关键函数sparkSession.udf.register有两种风格:面向对象式风格,通过实现匿名内部类来实现自定义功能面向函数式风格(一般选这种,比较简洁,见代码)register:第一个参数为函数名,第二个参数为一个函数,最后一个参数是register的返回值类型第二个参数函数的前N个参数为该函数的返回值,最后一个参数为该函数的返回值代码import org.apache.spark.Sp

2020-09-16 00:18:28 330

原创 sparkSQL sparkSQL保存到不同数据源中

sparkSQL保存到不同数据源中代码代码package saveDifferentimport org.apache.spark.SparkConfimport org.apache.spark.sql.{DataFrame, SparkSession}object save { def main(args: Array[String]): Unit = { //1、创建SparkConf对象 val sparkConf: SparkConf = new SparkCon

2020-09-15 23:32:48 124

原创 sparkSQL sparkSQL读写数据到MySQL

sparkSQL读写数据到MySQL前言sparkSQL加载MySQL表中的数据sparkSQL写数据到MySQLsparkSQL写数据部署到集群pom依赖前言spark sql可以通过 JDBC 从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中流程图sparkSQL加载MySQL表中的数据import java.util.Propertiesimport org.apache.spark.SparkConfimp

2020-09-15 23:28:58 3242

原创 sparkSQL sparkSQL整合hive(spark on hive)

sparkSQL整合hivesparkSQL整合hivesparkSQL整合hive步骤示例数据库保存在本地和数据库保存在HDFS应用场景sparkSQL整合hivesparkSQL整合hive,即spark on hive。本质是把hive当做数据源,使用spark作为计算引擎来处理数据。sparkSQL整合hive步骤把hive安装目录下conf文件夹里的hive-site.xml拷贝到集群每一个spark安装目录下对应的conf文件夹中目的:让spark知道存放hive表的元数据的M

2020-09-15 14:29:43 855

原创 sparkSQL sparkSQL操作hiveSQL

sparkSQL操作hiveSQLsparkSQL操作hiveSQLsparkSQL操作hiveSQL来操作本地文件sparkSQL操作hiveSQL来操作HDFS上的hivepom依赖sparkSQL操作hiveSQLsparkSQL操作hiveSQL并不是sparkSQL on hive。sparkSQL操作hiveSQL底层运行的依然是MR程序sparkSQL on hive是把hive当做数据源,spark作为计算引擎。核心:开启hive依赖enableHiveSupport()

2020-09-15 00:58:39 1232

原创 sparkSQL RDD转换成DataFrame并读取数据

RDD转换成DataFrame并读取数据利用反射机制通过StructType动态指定Schemapom依赖利用反射机制应用场景:在开发代码之前,可以事先确定好DataFrame的schema信息,通过反射机制后期直接映射成DataFrame的schema信息要点需要事先定义一个样例类,参数与schema信息一致需要手动导入隐式转换,注意导入对象要与前面定义的sparkSession对象名称一致代码示例import org.apache.spark.SparkContextimport o

2020-09-14 18:44:46 1549 1

原创 sparkSQL sparkSQL之DataFrame和DataSet

sparkSQL之DataFrameDataFrame概述DataFrame发展DataFrame是什么DataFrame和RDD的优缺点读取文件构建DataFrameDataFrame常用操作DataFrame概述DataFrame发展DataFrame前身是schemaRDD,schemaRDD直接继承RDD,是RDD的一个实现类在spark1.3.0之后把schemaRDD改名为DataFrame,它不在继承自RDD,而是自己实现RDD上的一些功能(如 map filter flatmap等

2020-09-14 18:32:29 753

原创 sparkSQL sparkSQL概述和特性

sparkSQL概述和特性sparkSQL的前世今生什么是sparkSQLsparkSQL的四大特性易整合统一的数据源访问兼容hive支持标准的数据库连接sparkSQL的前世今生hive ->翻译成sql->解析成MRshark->翻译成sql>解析成spark任务在spark出现之前,Shark是专门针对于spark的构建大规模数据仓库系统的一个框架Shark与Hive兼容、同时也依赖于Spark版本Hivesql底层把sql解析成了mapreduce程序,Sh

2020-09-10 18:04:02 260

原创 sparkstreaming sparkstreaming调优

sparkstreaming调优基于receiver接收器的调优调整BolckReceiver数量调整block数量调整receiver接受速率调整数据处理的并行度数据的序列化内存调优Output Operations性能开启压力反馈Elastic Scaling(资源动态分配)数据倾斜调优基于receiver接收器的调优现在很少使用receiver方式了,相关调优方式了解即可调整BolckReceiver数量BolckReceiver数量默认是1代码示例val kafkaStream = {

2020-09-10 00:43:02 397

原创 sparkstreaming sparkstreaming实现exactly-once

sparkstreaming实现exactly-once实现前提解决思路实现pom文件代码实现实现前提Source支持Replay流计算引擎本身处理能保证Exactly-Once。Sink支持幂等或事务更新解决思路接收数据:从Source中接收数据。转换数据:用DStream和RDD算子转换。储存数据:将结果保存至外部系统。关键问题把数据结果保存和提交偏移量放到一个事务里,要不都成功,要不都失败。实现pom文件 <dependency>

2020-09-09 20:50:37 234

原创 sparkstreaming ScalikeJDBC

ScalikeJDBC什么是ScalikeJDBCIDEA项目中导入相关库数据库操作数据库连接配置信息加载数据配置信息查询数据库并封装数据插入数据AutoCommit插入返回主键标识事务插入更新数据什么是ScalikeJDBCScalikeJDBC是Scala开发人员基于SQL的简洁数据库访问库。该库自然包装JDBC API,为您提供易于使用且非常灵活的API。更重要的是,QueryDSL使您的代码类型安全且可重用。ScalikeJDBC是一个实用且适合生产的产品。 将此库用于实际项目.ID

2020-09-09 20:34:01 160

原创 sparkstreaming sparkstreaming与kafka整合(两种receiver方式)

sparkstreaming两种receiver方式sparkstreaming语义sparkstreaming整合kafka的两种方式Receiver-based ApproachDirect Approach (No Receivers)Direct Approach下sparkstreaming整合kafka0.8Direct Approach下sparkstreaming整合kafka1.0sparkstreaming语义sparkstreaming有三种语义At most once 一

2020-09-09 19:55:11 572

原创 sparkstreaming sparkstreaming动态感知kafka分区

sparkstreaming动态感知kafka分区0.8版本kafka1.0版本kafka0.8版本kafka0.8版本kafka需要粘贴DirectKafkaInputDStream类并重写,比较麻烦。实现和部署可以参考一下链接代码实现部署1.0版本kafkasparkstreaming整合1.0版本的kafka天然支持动态感知kafka分区不用特殊处理如下采取直连模式整合kafkaval kafkaDStream: InputDStream[ConsumerRecord[Stri

2020-09-09 19:54:15 468

原创 sparkstreaming sparkstreaming容错机制

sparkstreaming容错机制sparkstreaming运行流程Executor失败Driver失败driver的自动重启设置数据丢失executor备份WAL预写日志实现步骤某个task特别慢sparkstreaming运行流程提交一个sparkstreaming程序到服务器运行,默认提交的服务器为client,并向ClusterManager报备申请资源。在一个executor中单独启动一个receiver线程(默认一个,可以更改成多个)用来接收数据。receiver根据指定时间间隔(

2020-09-08 17:30:25 288

原创 sparkstreaming sparkstreaming整合sparksql

sparkstreaming整合sparksql示意图代码示意图sparkstreaming实时处理DStream,SparkSQL批处理DataFramesparkstreaming处理的DStream内部封装有RDD,通过.toRDD将DStream转换成RDDSpqrkSQL处理的DataFrame内部同样封装有RDD,DataFrame通过注册成表,被SparkSQL处理所以本质上SpqrkSQL处理的还是DStream代码import org.apache.spark.Spar

2020-09-07 23:18:22 392

原创 sparkstreaming checkpoint

sparkstreaming checkpointcheckpointcheckpointcheckpoint用来保存以下两部分信息:之前运算结果中的数据driver端的元数据信息,即程序的执行逻辑。也就是说可以通过checkpoint来实现driver端程序的高可用注意如果程序中断之后,对代码进行了修改变更,此时checkpoint目录也就没有意义。还会按照之前的代码逻辑走import org.apache.spark.SparkConfimport org.apache.spa

2020-09-07 20:16:28 279

原创 sparkstreaming foreach foreachRDD foreachPartition

sparkstreaming 常见遍历函数的区别区别foreachforeachRDDforeachPartition官网示例代码示例官网链接区别foreach源码 /** Applies a function `f` to all values produced by this iterator. * * @param f the function that is applied for its side-effect to every element. *

2020-09-07 17:53:42 518

IDEA快捷键大全.zip

用户仅可上传其享有知识产权或已取得相关权利人合法授权的资源或内容,用户不得在未经授权的情况下,上传任何可能涉及侵权的资源或内容,用户必须保证上传资源或内容不侵犯任何第三方的合法权益。用户不得未经著作权人同意擅自对他人的作品进行全部或部分复制、修改、改编、翻译、汇编、反向工程、反向编译、反向汇编或改写并进行上传。用户可以为介绍、评论、研究等目的,在合理范围内依法引用他人已经发表的作品,但应当注明作者姓名、作品名称,且不得侵犯著作权人及其他权利人的合法权益

2020-07-14

工程文件设置输出

配置VS,按照库文件、头文件等给项目分类。

2016-11-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除