自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Widsom的博客

人的原动力来自对未来的美好憧憬

原创 ElasticSearch Java High RESTful Api Basic认证的问题

ElasticSearch Java High RESTful Api Basic认证的问题因公司Elasticsearch集群升级到7.1.1,需要使用用户名密码登入。并且设置的user、role等权限。那么之前直接访问的方式是不行的。需要使用认证的方式进行访问。Elasticsearch的api非常的丰富。如:curl、python、java(多种)。下面展示curl、Python、Jav...

2019-10-31 12:42:00 1781 1

原创 Flink Table 将Stream追加写入Elasticsearch

Flink Table 将Stream追加写入ElasticsearchFlink Table提供了多种方式,写入ElasticSearch。一种是Connector的方式连接ElasticSearch,另一种是通过Sink的方式。下面分别介绍2种方式。一、Connector的方式写入Elasticsearchpublic class SqlSinkElasticSearchStream {...

2019-10-31 12:41:52 1166

原创 Flink Table 将Stream直接写入MySQL数据库

Flink Table 将Stream直接写入MySQL数据库Flink Table提供了一个JDBCAppendTableSink,可以直接往可靠地数据库中Sink数据,下面以MySQL为例:添加Maven的pom.xml依赖<dependency> <groupId>org.apache.flink</groupId> <arti...

2019-10-31 12:41:43 2072 2

原创 Flink Table 将kafka流数据追加到Csv格式文件

Flink Table 将kafka流数据追加到Csv格式文件Flink Table可以很好的将Stream数据直接写入到文件系统。示例如下:代码示例public class SqlSinkFileSystemStream { public static void main(String[] args) throws Exception { StreamExecuti...

2019-10-31 12:41:33 1103

原创 Flink Table 基于Processing Time、Event Time的多种Window实现

Flink Table 基于Processing Time、Event Time的多种Window实现Flink 提供了Table Api,用来统一批流入口,使用Flink Table Api,直接处理流,会特别的简洁,易用。下面来看下使用Flink Table Api实现 Tumble Window(翻滚窗口)、Slide Window(滑动窗口)、Session Window(会话)。一...

2019-10-31 12:41:22 1776 2

原创 Flink Stream日志写入Kafka集群

Flink Stream日志写入Kafka集群Flink Stream的输出日志,直接输出的Kafka集群,进行持久化。一、log4j.properties文件配置log4j.rootLogger=INFO,file,kafkalog4j.logger.org.apache.kafka=INFO#############################################...

2019-10-31 12:41:14 544

原创 Flink DataStream之Kafka数据写入HDFS,并分区到Hive

Flink DataStream之Kafka数据写入HDFS,并分区到Hive因业务要求,我们需要从Kafka中读取数据,变换后最终Sink到业务的消息队列中,为保证数据的可靠性,我们同时对Sink的结果数据,进行保存。最终选择将流数据Sink到HDFS上,在Flink中,同时也提供了HDFS Connector。下面就介绍如何将流式数据写入HDFS,同时将数据load到Hive表中。一、po...

2019-10-31 12:41:05 2510 1

原创 Flink DataStream Async I/O(异步IO)

Flink DataStream Async I/O(异步IO)当我们在Operator算子中,需要与外部系统交互时(例如:查询数据库),如果我们使用同步的方式,那么容易造成该Operator计算延迟,吞吐量低。所以Flink 提供了Async I/O机制,可以通过异步操作,处理查询数据库等类似耗时的操作。与数据库的异步交互意味着单个并行函数实例可以同时处理许多请求并同时接收响应。这样,等待时...

2019-10-31 12:40:51 587

原创 Flink DataStream KeyedProcessFunction实现类似Session Window功能

Flink DataStream KeyedProcessFunction实现类似Session Window功能一、KeyedProcessFunction功能介绍KeyProcessFunction是一个低级的Stream处理操作(Operator),可以更加灵活的处理Stream的业务逻辑,它可以访问所有流应用程序的基本构建块:事件(Event)状态(State,仅支持KeyedS...

2019-10-31 12:40:41 1366

原创 Flink Checkpoint(检查点)

Flink Checkpoint(检查点)Flink中的每个函数和运算符都可以是有状态的(如果是Keyed Stream,使用ValueState、ListState等状态,如果是Operator State,实现CheckpointedFunction或CheckpointedList接口。使用ListState、MapState获取状态)。有状态的函数在各个元素/事件处理中存储数据。使状态成...

2019-10-31 12:40:29 555

原创 Flink DataStream Window

Flink DataStream WindowWindows是处理无限流的核心。Windows将流拆分为有限大小的"桶",这样可以在Window中进行聚合操作。窗口的生命周期:一般当第一个元素到达时,创建窗口,当(处理时间或事件时间)时间大于等于其结束的时间,窗口进行触发计算,计算结束后,窗口将完全删除。1. Window的分类Window可以分为2类,分别为:Keyed Windows(...

2019-10-31 12:40:20 392 1

原创 Flink DataStream之min()与minBy(),max()与max之间的区别

Flink DataStream之min()与minBy(),max()与max之间的区别min():获取的最小值,指定的field是最小,但不是最小的那条记录,后面的示例会清晰的显示。minBy():获取的最小值,同时也是最小值的那条记录。max()与maxBy()的区别也是一样。那么下面来看示例:public class MinOrMinByOperator { publi...

2019-10-31 12:39:53 1895 5

原创 Flink的多种提交方式

Flink的多种提交/运行方式Flink具有多种提交方式,比如:常用的local模式,stantalone模式,yarn模式,k8s等。这里主要对比local,stantalone,yarn三种提交方式。一、本地(local)模式,仅开发使用1.1 纯粹的local模式运行这就是直接运行项目中的代码的方式提交:public class TestLocal { public st...

2019-10-31 12:39:43 4011

原创 Flink的Session Window的简单使用

Flink的Session Window的简单使用一、Session Window的概念参见官方文档https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/operators/windows.html#session-windows二、业务需求本文的需求是:通过flink处理用户的行为日志,如果...

2019-10-31 12:39:20 1122

原创 Flink DataStream 广播状态模式

Flink DataStream 广播状态模式我们使用State描述了Operator State,在恢复时,可以修改并行度重新分配Operator State(偶分裂再分配方式),或者使用Union的方式(联合重新分发)恢复并行任务。Operator State还有一种广播状态模式(Broadcast State)。引入广播状态是为了支持这样的用例,其中来自一个流的一些数据需要被广播到所有...

2019-10-31 11:00:27 1039

原创 Flink DataStream Manager(托管) Operator State的简单使用

Flink DataStream Manager(托管) Operator State的简单使用要使用Manager(托管) Operator State,需要实现CheckpointedFunction接口或者ListCheckpointed<T extends Serializable>接口。一、CheckpointFunctionCheckpointedFunction接口...

2019-07-02 15:40:02 862 1

原创 Flink DataStream Manager(托管) Keyed State的简单使用

Flink DataStream Manager(托管) Keyed State的简单使用Manager(托管)Keyed State接口提供对不同类型状态的访问,这些状态都限定为当前输入元素的键。这意味着这种类型的状态只能用于一个 KeyedStream,可以通过创建stream.keyBy(…)返回KeyedStream对象。这个可用的State有:ValueState<T&g...

2019-07-02 15:38:48 661

原创 Flink DataStream State(状态)

Flink DataStream State(状态)一、State(状态)的种类State有2类:Keyed State和Operator State。Keyed State:与keys相关的状态,仅仅用于Keyed Stream的Operator(算子)的Function。Operator State: Non-Keyed State,每个operator state都绑定到一个...

2019-07-01 17:23:08 1088

原创 Flink DataStream State Backend(状态后端)

Flink DataStream State Backend(状态后端)State Backend(状态后端)用Data Stream Api 编写的程序经常是需要保存状态的,如下面情况:Windows中聚集的元素直到被触发计算。在触发之前,需要保存Windows中的元素的状态。转换(Transformation)函数可以使用Key/Value状态接口存储状态值转换(Transform...

2019-07-01 17:21:32 1518

原创 Flink DataStream Evictors(驱逐器)

Flink DataStream Evictors(驱逐器)Flink 窗口模式允许特别的算子Evictor(驱逐器),应用在WindowAssigner和trigger之间。通过evictor()方法使用。Evictor驱逐器能够在element进入Window窗口聚合之前进行移除数据或者在进入Window窗口聚合后,Trigger触发计算操作之前移除数据。Evictor的2个方法:...

2019-06-28 16:05:15 591

原创 Flink DataStream Trigger触发器

Flink DataStream Trigger触发器触发器是指当Window(window 分配器产生)窗口准备通过WindowFunction计算时触发。每一个Window分配器都会有一个默认的Trigger(触发器)。如果默认的Trigger(触发器)不满足你的需要,你可以自定义触发器。触发器的方法触发器的有4个抽象方法,2个具有实现方法。抽象方法:onElement():每个...

2019-06-28 16:04:30 1592

原创 Flink DataStream WaterMark

Flink DataStream WaterMark为了处理事件时间,Flink需要知道事件的时间戳,这意味着流中的每个元素都需要分配其事件时间戳。这通常通过从元素中的某个字段访问/提取时间戳来完成。时间戳分配与生成水印密切相关,水印告诉系统事件时间的进展。1.生成Watermark的两种方式1.1 在数据源(source)中生成WaterMarkpublic class WaterMa...

2019-06-27 17:29:32 261 1

原创 Flink DataStream iterate算子的简单使用

Flink DataStream iterate算子的简单使用由于DataStream程序可能永远不会完成,因此没有最大迭代次数。相反你需要指定流的哪个部分反馈到迭代,哪个部分使用split转换或转发到下游filter。下面看示例:public class IterateOperator { public static void main(String[] args) throws...

2019-06-27 14:41:42 1197 2

原创 Flink DataStream unoin与connect的区别

Flink DataStream unoin与connect的区别Flink DataStream中union和connect都有一个共同的作用,就是将2个流或多个流合成一个流。但是两者的区别是:union连接的2个流的类型必须一致,connect连接的流可以不一致,但是可以统一处理。具体看下面示例:public class ConnectOperator { public sta...

2019-06-27 14:40:36 1611

原创 Flink DataStream Join && IntervalJoin && coGroup的区别

Flink Stream join && intervalJoin && coGroup的区别Flink DataStream Api提供了3中Stream join的算子,分别是join,intervalJoin和coGroup算子。join:是一个流join另一个流,需要设置窗口,2个流join需要的key字段。使用的是innerJoin。对Processi...

2019-06-27 14:39:43 1240

原创 Flink重启策略

Flink重启策略Flink支持不同的重启策略,可以控制在发生故障时如何重启新启动作业。默认重启策略是通过Flink的配置文件设置的flink-conf.yaml。配置参数restart-strategy定义采用的策略。如果未启用检查点,则使用“无重启”策略。如果激活了检查点并且尚未配置重启策略,则固定延迟策略将用于 Integer.MAX_VALUE重启尝试。重启策略分为:固定延迟重启策...

2019-06-26 18:19:32 1588

原创 Flink RMQSink写入RabbitMQ出现Connection数一直持续增加的问题

Flink RMQSink写入RabbitMQ出现Connection数一直持续增加的问题因业务需求,Flink程序要往RabbitMQ中写数据。一开始使用自己开发环境下的RabbitM,那是非常的顺溜。到测试环境,就出问题了。在RabbitMQ的web ui页面,看到连接数猛的增加,而且一直不停。导致测试环境的RabbitMQ挂了。当时蒙圈啊,出啥问题了,这么严重。经过一番排查对比。发现在R...

2019-06-13 17:59:30 1146 1

原创 解决Flink输出日志中时间比当前时间晚8个小时的问题

解决Flink输出日志中时间比当前时间晚8个小时的问题在flink standalone集群上,发现log输出时间比当前时间晚8个小时,我的集群系统时间是CTM+8时区的。一开始发现时间不对,还不太上心,后面发现业务在本地跑起来是正常的,提交到集群跑不输出结果,这下就尴尬了。经过一系列的排查。发现ProcessTime时间不对。后面发现flink时间默认为UTC时间(真是个坑啊,心中默念,心平气...

2019-06-13 17:57:35 1618 5

原创 Flink SplitStream的简单使用

Flink SplitStream的简单使用在Flink DataStream api中有一个split()算子,它的功能是将一个Stream,通过split()设置多个标记,划分成多个流。再通过select()获取对应标记的流。像种算子,可以根据不同的tag,进行不同的逻辑处理,可谓是非常的方便。具体看代码:public class SplitOperator { public ...

2019-06-05 18:10:03 1536

原创 Flink CEP简单示例----对用户访问页面顺序检测

Flink CEP简单示例----对用户访问页面顺序检测CEP是flink早期推出的一个的库,是基于一些规则模型,检测异常行为。比如检测反爬虫,或检测优惠活动褥羊毛行为等。下面简单介绍一下项目背景,使用CEP做模式检测。需求:因公司针对会员,发放优惠券活动,因防止羊毛党褥羊毛,通过Flink CEP进行异常检测。检测规则,如果同一个设备号在5分钟内顺序访问login页面–>my页面–...

2019-05-24 18:05:10 1279

原创 使用gensim计算文本相似度

使用gensim计算文本相似度计算文本相似度步骤逻辑1、将文本数据,通过jieba分词进行处理,形成一个二维数组2、将二维数组生成词典3、将二维数组通过doc2bow稀疏向量,形成语料库4、使用TF模型算法,将语料库计算出Tfidf值5、获取词典token2id的特征数6、计算稀疏矩阵相似度,建立一个索引7、测试数据jieba分词处理8、通过doc2bow计算测试数据的稀疏向量...

2019-04-25 15:00:56 3545 1

原创 解决Spark 读取 Elasticsearch的array类型报错的问题

解决Spark 读取 Elasticsearch的array类型报错的问题在我们读取Elasticsearch存储的半结构化的数据是,会遇到需要获取array类型的数据。然而会报错,错误截图如下:es.read.field.as.array.include通过es.read.field.as.array.include指定array类型,防止报错。代码如下:from pyspark....

2019-03-18 17:48:57 905

原创 MongoDB数据写入ES,SparkSQL读取ES的数据简单示例(Python)

MongoDB数据写入ES,SparkSQL读取ES的数据简单示例(Python)1.MongoDb数据写入ES代码示例#!/usr/bin/env python# -*- coding: utf-8 -*-import datetimeimport pymongofrom elasticsearch import Elasticsearchif __name__ == '__...

2019-02-14 15:32:10 838 1

原创 Elasticsearch API简单操作

Elasticsearch API简单操作在操作Elasticsearch之前,需要先安装Elasticsearch集群,安装博客如:Elasticsearch集群安装下面介绍简单介绍Elasticsearch的3中操作方式,分别curl,java,python操作。1.curl操作基本上curl操作,通过GET,POST,DELETE操作就OK具体的模式如下:curl -X<V...

2019-02-13 17:14:55 634 1

原创 Flink读取Kafka数据Sink到MySQL和HBase数据库

Flink读取Kafka数据Sink到MySQL和HBase数据库Flink将流数据Sink到数据库,一般需要自己自定义Sink的实现。下面示例,演示Sink到MySQL和HBase示例。import java.util.Propertiesimport org.apache.flink.api.common.serialization.SimpleStringSchemaimport o...

2019-01-24 16:53:15 6912 2

原创 Flink 简单入门示例

Flink 简单入门示例1.Flink读取Socket流,实现Word Count示例import org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, _}import org.apache.flink.streaming.api.windowing.time.Timeobject SocketWindowW...

2019-01-24 14:49:19 2373

原创 PySpark Structured Streaming kafka示例

PySpark Structured Streaming kafka示例直接上代码:#!/usr/bin/env python3 # -*- coding: utf-8 -*-from pyspark.sql import SparkSessionfrom pyspark.sql.functions import from_jsonfrom pyspark.sql.types...

2019-01-14 10:13:29 1262

原创 Structured Streaming流数据Sink到Mysql

Structured Streaming流数据Sink到MysqlStructured Streaming在Write的过程,并没有提供jdbc的写入format格式。所以需要自己通过foreach自己实现。具体实现代码如下:StructuredWriteMysql类package com.testimport java.sql.Connectionimport org.apac...

2019-01-11 16:25:19 1936 1

原创 Structured Streaming与Kafka的整合,实现不同json结构解耦

Structured Streaming与Kafka的整合,实现不同json结构解耦问题:Structured Streaming从kafka的不同topic读取数据,每个topic的value存取的数据格式是不同的。那么怎么使用一套模版代码,分别对多个topic进行读取数据。做到解耦呢?思考:Structured Streaming读取kafka的操作是一致的,只是对kafka的value值...

2019-01-10 16:46:35 1849

原创 Structured Streaming入门实例

Structured Streaming入门实例Structured Streaming是Spark2.4版本推出的新的实时流处理计算。相比Spark Streaming具有更低的延迟。具体信息请看:Structured Streaming官方介绍示例一:words countScala代码package com.testimport org.apache.log4j.{Leve...

2019-01-10 16:44:56 1593 1

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