自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SmallScorpion

吾生若有志,则以数据照星辰,明而透之;以技术踏大海,敢而往之;以代码忖余生,积而累之。故,不负韶华。

  • 博客(61)
  • 资源 (4)
  • 收藏
  • 关注

原创 Flink-将DataStream 转换成表 | 创建临时视图 | 输出到文件 | 输出到Kafka | 更新模式

将 DataStream 转换成表Flink允许我们把Table和DataStream做转换:我们可以基于一个DataStream,先流式地读取数据源,然后map成样例类,再把它转成Table。Table的列字段(column fields),就是样例类里的字段,这样就不用再麻烦地定义schema了。import com.atguigu.bean.SensorReadingimport org.apache.flink.streaming.api.scala._import org.apache.f

2020-05-31 20:32:34 3977 1

原创 Flink-Table API 和 Flink SQL简介 | 新老版本Flink批流处理对比 | 读取文件和Kafka消费数据 | API 和 SQL查询表

GitHubhttps://github.com/SmallScorpion/flink-tutorial.gitTable API 和 Flink SQL 是什么Flink 对批处理和流处理,提供了统一的上层 APITable API 是一套内嵌在 Java 和 Scala 语言中的查询API,它允许以非常直观的方式组合来自一些关系运算符的查询Flink 的 SQL 支持基于实现了 SQL 标准的 Apache Calcite基本程序结构Table API 和 SQL 的程序结构,与流

2020-05-31 18:58:16 1167

原创 Flink-状态一致性 | 状态一致性分类 | 端到端状态一致性 | 幂等写入 | 事务写入 | WAL | 2PC

状态一致性当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确?举例来说,假设要对最近一小时登录的用户计数。在系统经历故障之后,计数结果是多少?如果有偏差,是有漏掉的计数还是重复计数?什么是状态一致性有状态的流处理,内部每个算子任务都可以有自己的状态对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。一条数据不应该丢失,也不应该重复计

2020-05-30 19:57:18 1760

原创 Flink-容错机制 | 一致性检查点 | 检查点到恢复状态过程 | Flink检查点算法(Chandy-Lamport) | 算法操作解析 | 保存点简介

一致性检查点(Checkpoints)Flink 故障恢复机制的核心,就是应用状态的一致性检查点有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候(如5这个数据虽然进了奇数流但是偶数流也应该做快照,因为属于同一个相同数据,只是没有被他处理)在JobManager中也有个Chechpoint的指针,指向了仓库的状态快照的一个拓扑图,为以后的数据故障恢复做准备从检查点恢复状态在执行流应

2020-05-29 23:08:21 1899

原创 Flink-侧输出流(SideOutput)及用侧输出流进行分流操作

GitHubhttps://github.com/SmallScorpion/flink-tutorial.git侧输出流(SideOutput)大部分的DataStream API的算子的输出是单一输出,也就是某种数据类型的流。除了split算子,可以将一条流分成多条流,这些流的数据类型也都相同。process function的side outputs功能可以产生多条流,并且这些流的数据类型可以不一样。一个side output可以定义为OutputTag[X]对象,X是输出流的数据类型。proc

2020-05-29 21:41:35 3384

原创 Flink-ProcessFunction API(底层API)的简介,KeyedProcessFunction实例、TimerService 和 定时器(Timers)及监控10秒内持续上升温度应用

ProcessFunction API(底层API)一般得转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermark以及注册定时事件。还可以输出特定的一些事件,例如超时事件等。Process Function用来构建事件驱动的应用以及实现自定义的业务逻辑(使用之前的window函数和

2020-05-28 22:17:41 1231 1

原创 Flink-状态后端得定义及选择 | 状态编程求上次温度与此次温度对比相差指定额度进行报警 | 使用已有API实现

状态后端(State Backends)每传入一条数据,有状态的算子任务都会读取和更新状态由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务都会在本地维护其状态,以确保快速的状态访问状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)状态后端主要负责两件事:本地的状态管理,以及将检查点(checkpoint)状态写入远程存储选择一个状态后端Pom <!-- RocksDBStateBackend --&g

2020-05-28 21:32:24 382

原创 Flink-状态编程和容错机制 | 算子状态和键控状态的介绍及数据结构 | 状态的定义及使用

GitHub代码https://github.com/SmallScorpion/flink-tutorial.git状态编程和容错机制流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并根据最后一个事件输出结果。例如,流处理应用程序从传感器接收温度读数,并在温度超过90度时发出警告。有状态的计算则会基于多个事件输出结果。以下是一些例子。所有类型的窗口。例如,计算过去一小时的平均温度,就是有状态的计算。所有用于复杂事件处理的状态机。例如,若在一分钟内收到两个相差20度以上的温度读

2020-05-28 19:40:46 1244

原创 Flink-EventTime数据测试 | watermark、allowedLateness、sideOutputLateData 三重保证数据不丢失

程序代码import com.atguigu.bean.SensorReadingimport com.atguigu.window.MyReduceFuncimport org.apache.flink.streaming.api.TimeCharacteristicimport org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractorimport org.apache.

2020-05-28 16:41:26 933

原创 Flink-时间语义与Wartmark及EventTime在Window中的使用

代码GitHub:https://github.com/SmallScorpion/flink-tutorial.gitFlink中的时间语义Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入Flink的时间。Processing Time:是每一个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是Processing Time

2020-05-26 21:37:16 1179

原创 Flink-Window概述 | Window类型 | TimeWindow、CountWindow、SessionWindow、WindowFunction

>代码GitHub:https://github.com/SmallScorpion/flink-tutorial.gitWindow概述streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window是一种切割无限数据为有限块进行处理的手段。Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。Window类型1. CountW

2020-05-26 18:29:58 1094

原创 Flink-Sink的简单五种输出对象-文件、kafka、Redis、Elasticserach、MySQL

SinkFlink没有类似于spark中foreach方法,让用户进行迭代的操作。虽有对外的输出操作都要利用Sink完成。最后通过类似如下方式完成整个任务最终输出操作。 stream.addSink(new MySink(xxxx)) 官方提供了一部分的框架的sink。除此以外,需要用户自定义实现sinkBahir添加了Redis这些Sink输出到文件import com.atguigu.bean.SensorReadingimport org.apache.flink.api.comm

2020-05-25 21:54:57 2514

转载 Flink-支持的数据类型和实现UDF函数(更细粒度的控制流)

支持的数据类型Flink流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些对象。它们需要被序列化和反序列化,以便通过网络传送它们;或者从状态后端、检查点和保存点读取它们。为了有效地做到这一点,Flink需要明确知道应用程序所处理的数据类型。Flink使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器、反序列化器和比较器。Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息,从而获得序列化器和反序列化器。但是,在某些情况下

2020-05-25 20:28:57 573

原创 Flink-Transform(转换算子)|Map|Reduce|Split和Select|Connect和CoMap|Union

mapval streamMap = stream.map { x => x * 2 }flatMapflatMap的函数签名:def flatMap[A,B](as: List[A])(f: A ⇒ List[B]): List[B]例如: flatMap(List(1,2,3))(i ⇒ List(i,i))结果是List(1,1,2,2,3,3),而List(“a b”, “c d”).flatMap(line ⇒ line.split(" "))结果是List(a, b,

2020-05-25 20:00:32 501 1

原创 Flink-Environment的三种方式和Source的四种读取方式-从集合中、从kafka中、从文件中、自定义

EnvironmentgetExecutionEnvironment:创建一个执行环境,表示当前执行程序的上下文。 如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。如果没有设置并行度,会以flink-conf.yaml中的配置为准,默认是1。// 批处理val env: ExecutionEnvir

2020-05-25 18:16:11 3894 1

原创 Flink-运行时架构中的四大组件|任务提交流程|任务调度原理|Slots和并行度中间的关系|数据流|执行图|数据得传输形式|任务链

Flink运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为Flink是用Java和Scala实现的,所以所有组件都会运行在Java虚拟机上。每个组件的职责如下:作业管理器(JobManager)控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager 所控制执行。JobManager 会

2020-05-24 22:15:21 2642 2

原创 Flink-Standalone模式提交任务|配置Slots大小

并行度设置其中keyBy不能设置会报错,因为keyBy不属于一个常规的任务算子,不需要做计算,只是做一个规则匹配,按照字段第一个进行合并,其他的算子都可以用setParallelism()进行设置并行度(为一个任务的subtask的的个数)将流式计算的WordCount进行打包如果遇到错误可以更改一下maven的版本,与自己版本相对应进行打包上传Jar到页面任务中任务提交查看任务状态这里的任务只是一种提交的状态,并没有真正的启动任务,当资源不够会一直转圈圈(其中parallelism为

2020-05-23 22:00:18 3509

原创 Flink-Standalone模式的配置及启动测试与查看

安装解压下载地址 : https://flink.apache.org/downloads.html这边注意得是:如果下以前得版本(https://archive.apache.org/dist/flink/flink-1.7.1/) 会发现其中 flink-1.7.1-bin-scala_2.11.tgz 这种为纯净得版本,那种带hadoop27分别对应得是hadoop版本如果下了纯净版本 flink-1.7.1-bin-scala_2.12.tgz 还需要下载与之对应得hadoop版本得j

2020-05-23 17:57:31 1214

原创 Flink-创建Maven编写流式处理和批处理得WordCount程序并测试

创建Maven并导入POM<dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.11</artifactId> <version>1.10.0</version> </depen

2020-05-23 16:16:33 424

原创 Flink-Flink简介|Flink架构|事件驱动型|分层API|Spark Streming与Flink对比

Flink简介Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。在德语中,Flink一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为logo,这不仅是因为松鼠具有快速和灵巧的

2020-05-23 14:00:08 843

原创 Spark实时项目第九天-ADS层实现热门品牌统计

分析数据库的选型创建数据库create database spark_gmall_reportCREATE TABLE `offset` ( `group_id` varchar(200) NOT NULL, `topic` varchar(200) NOT NULL, `partition_id` int(11) NOT NULL, `topic_offset` bigint(20) DEFAULT NULL, PRIMARY KEY (`group_id`,`topic

2020-05-22 22:20:49 359

原创 Spark实时项目第八天-DWS层订单明细实付金额分摊(双流合并)

需求主订单的应付金额【origin_total_amount】一般是由所有订单明细的商品单价数量汇总【sku_pricesku_num】组成。但是由于优惠、运费等都是以订单为单位进行计算的,所以减掉优惠、加上运费会得到一个最终实付金额【final_total_amount】。但问题在于如果是以商品进行交易额分析,也要把优惠、运费的效果分摊到购买的每个商品中。如何分摊一般是由订单明细每种商品的消费占总订单的比重进行分摊,比如总价1000元的商品,由分别由600元和400元的A、B两种商品组成, 但

2020-05-22 20:15:15 716 1

原创 Spark实时项目第七天-存储orderInfo和orderDetail的ES模板

PUT _template/gmall_order_info_template{ "index_patterns": ["gmall_order_info*"], "settings": { "number_of_shards": 3 }, "aliases" : { "{index}-query": {}, "gmall2020_order_info-q

2020-05-19 20:44:48 316

原创 Spark实施项目第七天-创建dw层订单明细表且与sku、spu、商标、类别进行联立

HBase中对四个维表进行建表create table gmall_base_category3 ( id varchar primary key ,info.name varchar, info.category2_id varchar )SALT_BUCKETS = 3create table gmall_base_trademark ( id varchar primary key ,info.tm_name varchar)SALT_BUCKETS = 3create table gm

2020-05-19 19:25:44 459

原创 Spark实时项目第六天-订单表与用户维度表联立

HBase建表create table gmall_user_info ( id varchar primary key , info.user_level varchar, info.birthday varchar,info.gender varchar,info.age_group varchar,info.gender_name varchar)SALT_BUCKETS = 3UserInfo在scala\com\atguigu\gmall\realtime\bean\UserInfo.

2020-05-19 17:47:36 655

原创 Spark实时项目第六天-订单表字段与地区表联立

修改OrderInfoAppimport com.alibaba.fastjson.{JSON, JSONObject}import com.atguigu.gmall.realtime.bean.{OrderInfo, UserState}import com.atguigu.gmall.realtime.utils.{MyKafkaUtil, OffsetManagerUtil, PhoenixUtil}import org.apache.hadoop.conf.Configurationim

2020-05-18 17:41:20 176

原创 Spark实时项目第六天-维度数据业务流程之监控维表数据并用maxwell-bootstrap初始化数据(全量导入省份表)

处理维度数据合并的策略维度数据和状态数据非常像,但也有不同之处:共同点:长期保存维护可修改使用k-v方式查询不同点:数据变更的时机不同状态数据往往因为事实数据的新增变化而变更维度数据只会受到业务数据库中的变化而变更根据共同点,维度数据也是非常适合使用hbase存储的,稍有不同的是维度数据必须启动单独的实时计算来监控维度表变化来更新实时数据。实时处理流程HBase建表create table gmall_province_info ( id varchar pri

2020-05-17 20:32:07 980 5

原创 Spark实时项目第五天-从cannal分流到kafka到实时计算判断首单并处理同批次订单首单判定冲突(HBase)

增加依赖<dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-spark</artifactId> <version>4.14.2-HBase-1.3</version></dependency><dependency> <groupId>org.apache.s

2020-05-17 09:07:02 256

原创 Spark实时项目第五天-需求分析|HBase和Phoenix配置|SQuirreL得简单使用|表得创建

需求分析:按地区(用户性别、用户年龄段)统计当日新增付费用户首单平均消费每笔订单都要判断是否是该用户的首单。无论是地区名称、用户性别、用户年龄,订单表中都没有这些字段。但是可以通过外键的形式关联其他表得到这些值。处理判断首单业务的策略判断是否首单的要点,在于该用户之前是否参与过消费(下单)。那么如何知道用户之前是否参与过消费,如果临时从所有消费记录中查询,是非常不现实的。那么只有将“用户是否消费过”这个状态进行保存并长期维护起来。在有需要的时候通过用户id进行关联查询。在实际生产中,这种用户状

2020-05-16 23:33:36 210

原创 Spark实时项目第五天-Maxwell得安装及Maxwell版本的ODS层分流操作

Maxwellmaxwell 是由美国zendesk开源,用java编写的Mysql实时抓取软件。 其抓取的原理也是基于binlog。工具对比Maxwell 没有 Canal那种server+client模式,只有一个server把数据发送到消息队列或redis。Maxwell 有一个亮点功能,就是Canal只能抓取最新数据,对已存在的历史数据没有办法处理。而Maxwell有一个bootstrap功能,可以直接引导出完整的历史数据用于初始化,非常好用。Maxwell不能直接支持HA,但是它支持断

2020-05-16 22:02:31 401

原创 Spark实时项目第四天-ODS层实时计算分流(根据表分流到不同的主题中去)

编写代码在原来得spark-gmall-dw-realtime项目中继续添加代码增加MyKafkaSinkUtil在scala\com\atguigu\gmall\realtime\utils\MyKafkaSinkUtil.scalaimport java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerRecord}object MyKafkaSinkUtil { pr

2020-05-16 21:22:15 1033

原创 Spark实时项目第四天-MySQL的准备及Canal的安装测试

采集数据框架流程Canal 使用场景阿里otter中间件的一部分:otter是阿里用于进行异地数据库之间的同步框架,canal是其中一部分。更新缓存抓取业务数据新增变化表,用于制作拉链表。抓取业务表的新增变化数据,用于制作实时统计。canal工作原理Master主库将改变记录,写到二进制日志(binary log)中Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log);Slave

2020-05-15 15:06:31 273

原创 Linux用pip install myclient出现Caused by SSLError(SSLError解决办法

错误Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/mysqlclient/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Max retries exceeded with url: /simple/mysqlclient/ (Caused b

2020-05-14 17:14:03 1520

原创 Spark实施项目第三天-日活数据查询接口编写

目的访问路径数据格式创建一个Spring Initializr项目 <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.apache.commons</groupId>

2020-05-13 20:34:08 239

原创 Spark实时项目第三天-精准一次消费|手动提交偏移

精确一次消费问题产生解决方案手动提交偏移量用Redis保存偏移量原因编写OffsetManagerUtil在scala\com\atguigu\gmall\realtime\utils\OffsetManagerUtilimport java.utilimport org.apache.kafka.common.TopicPartitionimport org.apache.spark.streaming.kafka010.OffsetRangeimport redis.cl

2020-05-13 17:22:37 1206

原创 Spark实时项目第二天-代码开发之消费kafka|Redis去重|建立模板将数据保存到ES中

创建Maven项目并导入POM<properties> <spark.version>2.4.0</spark.version> <scala.version>2.11.8</scala.version> <kafka.version>1.0.0</kafka.version> <project.build.sourceEncoding>UTF-8

2020-05-12 22:10:13 590

原创 ElasticSearch在Java程序中的应用

关于es 的java 客户端的选择目前市面上有两类客户端一类是TransportClient 为代表的ES原生客户端,不能执行原生dsl语句必须使用它的Java api方法。另外一种是以Rest Api为主的missing client,最典型的就是jest。 这种客户端可以直接使用dsl语句拼成的字符串,直接传给服务端,然后返回json字符串再解析。两种方式各有优劣,但是最近elasticsearch官网,宣布计划在7.0以后的版本中废除TransportClient。以RestClient为主。

2020-05-10 19:43:52 344

原创 ElasticSearch中的aliases的增删查改|索引模板|创建模板|查看模板清单|查看模板详情

索引别名 _aliases索引别名就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,允许我们做下面这些:给多个索引分组 (例如, last_three_months)给索引的一个子集创建视图在运行的集群中可以无缝的从一个索引切换到另一个索引创建索引别名PUT movie_chn_2020{ "aliases": { "movie_chn_2020-query": {} }, "mappings":

2020-05-10 11:54:14 1818

原创 ElasticSearch默认中文分词|安装外部中文分词器IK|Mapping的简单测试|基于中文分词搭建索引

中文分词elasticsearch本身自带的中文分词,就是单纯把中文一个字一个字的分开,根本没有词汇的概念。但是实际应用中,用户都是以词汇为条件,进行查询匹配的,如果能够把文章以词汇为单位切分开,那么与用户的查询条件能够更贴切的匹配上,查询速度也更加快速。使用默认GET movie_index/_analyze{ "text": "我是中国人"}安装IK与es版本一致分词器下载网址:https://github.com/medcl/elasticsearch-analysis-

2020-05-10 11:09:39 771

原创 ElasticSearch对数据得操作-增删查改|过滤|排序|分页查询|指定查询|高亮|聚合

ElasticSearch restful api (DSL)DSL全称 Domain Specific language,即特定领域专用语言。es中保存的数据结构以文档方式存储,查看es中有哪些索引增加一个索引PUT /movie_index删除一个索引ES 是不删除也不修改任何数据的,而是增加版本号// 将整个表(idnex)删除DELETE /movie_index// 删除某一条数据DELETE /movie_index/move/3新增文档// PUT: 幂等

2020-05-09 16:18:53 538

saprk_ch_es_realtime的MDB创建表语句,自动生成db数据jar包

基于spark + ch + es 的一个spark实时数仓,其中做日活为采集日志,接下来为需要业务数据处理接下来的数据,那么MDB中的表生成语句包括插入语句,每日生成的业务数据jar包为此资源

2020-09-21

面向对象.xmind

面向对象的xmind思维导图,包含了类与类的成员、面向对象三大特性、关键字三个部分,对于正在学java基础的同学来说是一个比较好的整理,能够帮助回忆或者帮助自己整理脑中琐碎的知识点

2019-12-16

springmvc_day01.rar

springmvc+mybatis+spring整合的一个比较常规性的模板

2019-08-15

spring_test.rar

spring的简单描述,spring的IOC的了解,spring的DI的了解,spring的注入方式,注入类型,spring的第一次项目开发演示,spring的配置文件信息

2019-08-04

空空如也

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

TA关注的人

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