自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 资源 (1)
  • 收藏
  • 关注

原创 Kafka根据时间戳消费数据并返回最近的十条

根据时间戳消费kafka topic数据并返回最近十条。

2023-02-22 21:06:58 2336 1

原创 Flink-Conneector-DTS原理解析-附带源码

学习flinkDTS简介:数据传输服务DTS(Data Transmission Service)支持RDBMS、NoSQL、OLAP等数据源间的数据交互,集数据同步、迁移、订阅、集成、加工于一体,助您构建安全、可扩展、高可用的数据架构。阿里云dts连接器官方使用说明Flink-Conneector-DTS原理解析:一、POM文件初识DTS根据pom文件(略过provided/test)内容:可以看出,dts实际上是kafka-connector的一层外包装,即dts是将数据库的变更数据读到kaf

2022-03-27 17:59:58 3897

原创 2022-ES学习与实践

ES学习系列核心场景:es5.x基于Flink-Connector-Elasticsearch实现EsSink问题:添加权限控制,即x-pack相关实现。解决:ES5.x中,与es交互的client是TransportClient。以下为flink-connector-es5源码: @Override public TransportClient createClient(Map<String, String> clientConfig) { Setti

2022-03-27 16:23:00 3262

原创 2022规划

需要完成的事情:重新学习数据结构与算法、操作系统、计算机网络、计算机组成原理学习大数据知识阅读《Flink设计与实现》,深入了解Flink深入了解ES学习JVM相关知识读完20本书了解金融反欺诈业务,了解常见场景,常见指标目前进度:3.27:重新学习数据结构与算法、操作系统、计算机网络、计算机组成原理 -------0%学习大数据知识 -------0%阅读《Flink设计与实现》,深入了解Flink -------20%深入了解ES学习JVM相关知识

2022-03-27 15:54:09 2349

原创 ElasticSearch关于CREATE写入模式问题记录

ElasticSearch关于CREATE写入模式的问题记录问题:使用CREATE模式写入TPS骤降。数据特点:每条doc有4条相同的副本,即100条数据中,包含20组相同的数据。产生问题原因:Java代码中对所有Reponse中包含VersionConflictException异常的请求都进行了十次重试操作,无论请求是INDEX还是CREATE还是UPDATE。然鹅,看了官方文档以及实操后发现CREATE写入方式恰恰是通过版本锁来保证相同id只有第一条能写入成功,所以除了第一条写入的doc,其

2022-01-14 16:46:25 799

原创 es x-pack monitor权限问题

es monitor权限对集群信息拥有只读的权限问题使用flink-es-connector连接es服务时,如果开启xpack功能,需要monitor权限,如果登录的用户没有这个权限,es会报权限错误。但是实际生产中,monitor权限和index写的权限基本上不会同时赋予一个生产角色。所以需要更改这部分的源码,绕过monitor权限。解决自己写一个ping方法,仅检查ip:port是否能连通就行,其他的信息没有monitor权限也查不了拓展关于xpack权限的详细描述可以查看这篇文章里面有关

2021-10-29 20:31:32 275

原创 ES写入四大模式:INDEX、CREATE、UPDATE、DOC_AS_UPSERT

四大模式区别:INDEX:这个模式下,可以采用es内部生成id的方式,使得每次写入都是新增数据,因为每一次的id都不同CREATE:需要指定id,如果id已存在,则该条数据写入失败(被丢弃)UPDATE:需要指定id,如果id已存在,覆盖原有数据UPDAET --OPTION: DOC_AS_UPSERT需要指定id,如果id已存在,以UPSERT的方式更新数据,而不是直接覆盖原有数据。Java API// indexrequestIndexer.add(Requests.index

2021-09-29 21:02:09 5796

原创 flink-connector-hbase 任务提交yarn出现类冲突bugfix

第一种报错信息:java.lang.RuntimeException: Cannot create connection to HBase. at org.apache.flink.connector.hbase.sink.HBaseSinkFunction.open(HBaseSinkFunction.java:99) at org.apache.flink.api.common.functions.util.FunctionUtils.openFunction(FunctionUtils.java

2021-09-08 18:13:10 1458 2

原创 FlinkSQL hbase连接器读取数据失败问题

sql: tEnv.executeSql("DROP TABLE IF EXISTS ywb_source"); tEnv.executeSql( "CREATE TABLE ywb_source (\n" + " rowkey STRING,\n" + " info1 ROW<name STRING>,\n" +

2021-08-17 09:48:34 863

原创 定时任务quartz应用场景及问题解决

应用场景:客户每隔一段时间执行一次flinkssql的批任务,具体有四个场景:一次性:选择一个时间点上线任务。间隔周期:选择一个时间点,选定一个间隔小时数和一个间隔分钟数,在时间点首次触发,之后每隔间隔小时和间隔分钟执行一次,例如在2021-08-13 12:00:00上线,之后每隔1h30m执行一次。时间周期:选择一个上线日期,一个上线时间点,例如上线日期选择2021-8-13,时间点选择12:00,则在2021-08-13的12:00首次执行,如果当前时间已经超过12:00则在次日的12:00

2021-08-14 14:59:35 554

原创 定时任务--quartz

在定时任务中,cron表达式就显得非常重要:cron表达式语义:示例:

2021-08-03 16:04:19 85

原创 fastjson转换大全

字符串转json: /** * 将一个json字符串转换成json对象 */ public static JSONObject stringToJson(String json){ JSONObject jsonObject = JSONObject.parseObject(json); return jsonObject; }json转字符串: /** * 将一个json对象转换成json字符串 *

2021-08-02 20:27:42 215

原创 NoMatchingTableFactoryException 异常解决

报错信息:Exception in thread "main" org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for 'org.apache.flink.table.factories.TableSinkFactory' inthe classpath.Reason: Required context properties mismatch.T

2021-07-30 14:57:34 998

原创 Hbase-shell DML增删改查操作

增/改:put增加和修改都使用关键字put来执行规范:其中ns表示namespace,不填默认default,t表示table,r表示rowKey,c表示column,通常列用(列簇:列名)表示 hbase> put 'ns1:t1', 'r1', 'c1', 'value' hbase> put 't1', 'r1', 'c1', 'value' hbase> put 't1', 'r1', 'c1', 'value', ts1 hbase> put 't1',

2021-07-29 20:44:57 242

原创 es查询原理

es查询原理:步骤:查询请求将被随机发送到一个es节点,该节点成为coordinating node,即协调节点协调节点根据路由算法算出被查询doc所在的primary shard在哪个节点协调节点使用轮询调度算法(Round-Robin Scheduling)将请求平均的分配到primary shard和replica shard上,目的是负载均衡处理请求的节点将请求结果返回给协调节点协调节点将结果返回给用户本文参考千锋教育 搜索引擎 ElasticSearch 视频教程全集(60P)

2021-07-21 20:37:48 1267 1

原创 flink parallel 问题

问题:java.lang.IllegalArgumentException: Source: 21 is not a parallel sourceorg.apache.flink.client.program.ProgramInvocationException: The main method caused an error: Source: 21 is not a parallel source at org.apache.flink.client.program.Packaged

2021-07-19 11:51:55 345

原创 es漏采集数据解决办法

背景:使用search_after采集使用search_after采集需要指定一个或多个sort字段,我的初步方案是用一个时间戳字段

2021-07-14 22:19:27 697

原创 Elasticsearch7 index语法

Elasticsearch7 index语法查询:Get API | Elasticsearch Guide [7.13] | ElasticGET index/_doc/_id举例:GET my-index-000001/_doc/0插入和更新:Update API | Elasticsearch Guide [7.13] | Elastic_id存在就是更新,否则执行插入操作PUT /index/_doc/_id{ "content":"it is cool !"}举例:P

2021-07-09 19:56:30 208 2

原创 method <init>()V not found解决

错误信息:java.lang.NoSuchMethodError: org.apache.flink.streaming.connectors.elasticsearch7.ElasticsearchSink: method <init>()V not found产生原因:method ()V not found这种原因就是没找到正确的无参构造方法:引用的类里面没有无参构造方法引用的类出现冲突,有两个或以上的方法被捕获,但是系统无法判断用哪个我的问题:出于某种原因,我需要继承

2021-07-08 21:06:04 13111 3

原创 java.lang.BootstrapMethodError: call site initialization exception错误解决

问题产生原因:公司flink版本升级,我们是把任务打成jar包,传到flink集群上运行的,由于flink版本的升级,对组件产生了一定的影响。问题:es采集数据时,报了如下错误java.lang.BootstrapMethodError: call site initialization exceptionbug-fix:在pom文件中,把httpCore和httpClient单独引入,然后在es的引入中排除冲突的依赖,但是这个方法没有解决我的问题,最后通过降低es依赖的版本解决,从es7.11

2021-07-07 00:28:14 7805 3

原创 线程池的使用场景--采集es数据

场景:从ElasticSearch的多个index中持续增量采集数据初步解决方案:因为search_after本身可以采集多index,所以使用search_after直接采集数据遇到的问题:search_after采集多个index有限制,要么明确指定多个index的具体名称,要么使用*通配符,这两种方式中,前者太刻板,每次执行采集任务都需要手动输入很多index名称,后者不灵活,会匹配到用户不愿意或者不需要采集的index。解决方案优化使用正则表达式匹配index使用search_af

2021-06-25 17:00:40 249

原创 线程池原理学习

ThreadPoolExecutor线程池的构造方法中含有5个参数,第一个参数corePoolSize为核心线程数,第二个参数maximumPoolSize为所有线程数,所以非核心线程数即maximumPoolSize - corePoolSize,第三个参数keepAliveTime为非核心线程数执行完任务的存活时间,第四个参数unit为第三个参数的时间单位,第五个参数workQueue为线程池队列,源码如下图:提交优先级:核心线程 > 线程池队列 > 非核心线程 下图来自B站大佬源

2021-06-24 22:12:45 97

原创 ElasticSearch分页查询—search_after的引用

需求:实时从es中采集大量数据分析:既然是大批量数据,所以全量采集肯定不行,需要增量采集数据。ES中支持三种数据分页查询方案,分别是 1.from + size浅分页 2. scroll 3. search after在这三种分页方式中,from + size不适合数据量很大的场景,scroll不适合实时场景,而search after在es5.x版本之后应运而生,较好的解决了这个问题。如下官方文档所示:search after 工作流程:连接es客户端指定一个或多个排序字段(建议是_

2021-06-22 18:10:33 1226 2

原创 es index pattern 时间戳字段与kibana时区显示问题

故事发展:前两天交付找到我:“老弟,基于处理时间产生的时间戳在kibana里面展示差八个小时啊,什么情况,可以排查一下吗?”我看了一下,哦,原来这样:es的时间的时区默认是GMT0,然而交付在kibana设置的时区是Asia/Shanghai,由此就把es的时间提早了八小时。于是我跟交付说,“老哥,把kibana的时区设置成GMT0就正常了”交付:“哦豁,果然如此,感谢感谢”不一会儿,交付:“不行啊老弟,把kibana时区改了logstash的时间传过来就不对了,还有别的解决办法吗”我:“唉,那

2021-04-13 20:33:53 1042

原创 开发esSink组件二阶段

二阶段新增功能:实现基于事件时间的动态index实现事件时间添加时间戳实现权限控制遇到的困难:在完成事件时间index时,无法确定上游传下来的日期格式,所以不知道该如何格式化,后面经过讨论,决定由用户在前端表单中提交这种日期格式,然后我拿到这个日期格式去格式化数据中的时间字段,如果格式不符合则放弃写入,由脏数据日志收集。在完成事件时间时间戳时,也是在时间格式上出了问题,es在解析数据时,有一个默认时间模板,如果数据中某个字段符合这个模板,那么这个字段就会被划定成date格式存入es,其他的

2021-04-09 14:46:36 101

原创 es Index java Api

IndexRequest支持的参数类型:官网地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-index.html其实归根到底最后都是json直接传入Json字符串传入一个Map使用XContentBuilder直接以KV的形式传入...

2021-03-30 23:41:47 142

原创 开发EsSink组件总结

开发前期:学习es框架,根据自己需要的功能,重点研究某些模块。学习flink框架,尤其是flink-connector应该怎么写,怎么自定义的sink和source了解版本差异,了解flink-connector-es中对es和flink的版本要求开发过程中:开发过程还是很精彩的,从年前开始写了一个简单的demo,当时还仅仅是用es提供的Java api向es中写入数据,等年假回来,在强哥和战哥的的引导下开始使用flink-connector-es写了一个稍微高级一点的demo。再后来,要求把

2021-03-26 16:36:31 132

原创 git-commit操作

行为:由于使用不当,git commit的时候不小心提交了错误文件提交了不适当的commit message解决:针对第一种:git reset HEAD~1 撤销上一次commit针对第二种:git commit --amend 修改已经commit的信息

2021-03-25 00:35:31 83

原创 kafka ack机制/出现故障数据同步问题

kafka的ack有三种:0:producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据;例如:当leader挂了,producer仍然往这个leader发送消息,就会造成数据丢失1:producer等待broker 的ack,partition的leader落盘成功后返回ack,如果在 follower同步成功之前leader 故障,那么将会丢失数据;例如:当leader已经将收到的数据写入磁盘然后

2021-03-22 18:21:37 860

原创 maven重新学习的收获

package 和 install的区别:package仅仅执行打包功能,jar包保存在项目的target目录下,而不会保存到本地仓库,但是install会把打好的jar包存到maven本地仓库中scope中,compile,test,provided的作用和打包范围:打包并同步到私服:分享一个大佬的文章:https://blog.csdn.net/wujun8/article/details/39495629...

2021-03-15 19:12:56 85

原创 es7自动添加时间戳

需求:根据时间提取es数据解决:为es的记录添加时间戳方法:es5.0以前的版本使用的是@time_stamp方式来给document的每一条记录添加时间戳,"properties": { "@timestamp":{ "format":"strict_date_optional_time||epoch_millis", "type":"date" "enabled":

2021-03-11 21:40:31 9192

原创 es使用索引模板来指定分片和副本数

问题:es7中,创建索引时,默认只有一个分片,影响性能和可用性,经过一番探索之后,确定了这个方案,使用索引模板来指定创建索引时的分片数。举例:例一:当我创建了如下template_1的索引模板之后,我去创建索引开头名为test的索引时,会自动使用这个索引模板,创建出分片数为3,副本数为1的索引。POST _template/template_1{ "index_patterns": [ "test*" ], "settings": { "number_of_shards

2021-03-04 10:19:45 1908 1

原创 kibana启动踩坑:Error: resource_already_exists_exception

踩坑: [warning][savedobjects-service] Unable to connect to Elasticsearch. Error: resource_already_exists_exception原因:kibana认为系统已存在一个正在运行的kibana解决:1.访问以下两个请求,ip和port填自己的,确认是否有返回,如果有,进行下一步,如果没有我就不知道了http://localhost:9200/_cat/indiceshttp://localhost:9200/

2021-02-26 10:56:55 2785

原创 springboot集成es修改默认版本

导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>从maven中查看版本和本地是否一致,这里显示版本为7.9.3,我本地的版本为6..

2021-02-19 21:12:12 2904 3

原创 ik设置扩展词和停用词

扩展词:修改IKAnalyzer.cfg.xml配置文件,这是ik的config目录下的文件在config目录下创建ext.dic文件,最好是复制ik自带的dic文件,然后修改名称,最后将里面的内容清空,然后就能在里面添加自己的扩展词了,注意一词一行。...

2021-02-18 21:23:40 364

原创 ik分词器的下载和使用

下载、安装ik分词器6.2.4下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip其他版本修改url即可。安装:将zip传到linux,然后unzip解压,将解压的目录移动到es的plugins目录下即可,最后重启es验证:使用kibanaGET _analyze{“analyzer”: “ik_smart”,

2021-02-18 21:05:21 597

原创 es索引库原理

2021-02-18 18:21:14 206

原创 kibana语法

通过kibana对es进行crud:基本语法://创建一个简单索引PUT /bsfit//查看索引GET /bsfit//查看索引详细信息GET /_cat/indices?v//删除索引DELETE /bsfit//创建一个索引,并指定type和mappingPUT /bsfit{ "mappings": { "member":{ "properties": { "id":{"type": "keyword"}, "name"

2021-02-18 18:20:09 2132

原创 安装kibana

步骤:下载kibana安装包,传到linux上,并解压进入congfig目录,修改kibana.yml (根据需要保存原文件),找到其中的server.host和elasticsearch.url,将其中的ip改成自己的ip,保存退出。到bin目录下通过命令 ./kibana 启动kibana服务,然后可以通过5601端口访问kinaba服务。...

2021-02-18 12:49:59 128

原创 centos7安装es

环境:jdk8 centos7 es6.2.4安装步骤:创建一个用户组和一个普通用户es切换到普通用户es下载es安装包,然后解压,解压后就可以直接在bin目录中通过 ./elasticsearch 启动es服务设置远程访问:修改config目录下的elasticsearch.yml解决重启报错:[1]:切换到root用户,vim /etc/security/limits.conf ,在末尾追加#注意格式对齐,*不能省略* soft

2021-02-18 11:00:06 233

基于springboot结合mybatis和thymeleaf的宿舍管理系统宿舍管理系统.7z

基于springboot结合mybatis和thymeleaf的宿舍管理系统!

2020-07-12

空空如也

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

TA关注的人

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