![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
原创
代码编制世界
大数据
展开
-
flink之Timer定时器
一、Timer简介Timer(定时器)是Flink Streaming API提供的用于感知并利用处理时间/事件时间变化的机制。最常见的使用Timer的地方就是KeyedProcessFunction。我们在其processElement()方法中注册Timer,然后覆写其onTimer()方法作为Timer触发时的回调逻辑。根据时间特征的不同:(1)处理时间——调用Context.timerService().registerProcessingTimeTimer()注册;onTimer()在系统时原创 2020-12-08 16:16:56 · 3049 阅读 · 0 评论 -
Apache Hbase基本概念及Java API
一、Apache Hbase基本概述Apache Hbase是一个基于Hadoop的数据库,它可靠、数据多版本、分布式适合结构化大数据的存储,Apache Hbase是Google BigTable开源实现,基于列储存的菲关系型数据库。(1)列储存和行储存的区别列储存和行储存是指数据子存储介质中的额储存方式**·**关系型数据库(行储存):Oracle、mysql等**·**非关系型数据库(列储存):Hbase、Redis(2)Hbase数据模型及概念(1)主键rowkey:获取数据的唯一原创 2020-09-21 10:07:16 · 548 阅读 · 0 评论 -
flink之内存分配与内存管理
Apache Flink 1.10对任务管理器的内存模型和Flink应用程序的配置选项进行了重大更改。这些最近引入的更改使Flink更适合于各种部署环境(例如Kubernetes,Yarn,Mesos),从而对其内存消耗进行了严格控制。本文将介绍Flink 1.10中的Flink内存模型,如何设置和管理Flink应用程序的内存消耗。1、Flink内存模型简介对Apache Flink的内存模型有清晰的了解,可以使开发者更有效地管理各种工作负载的资源。下图说明了Flink中的主要内存组件:任务管理器进原创 2020-08-17 11:19:22 · 1926 阅读 · 1 评论 -
那些年,我们一起使用过的case...when
1、case…when的用法case具有两种用法,一种是case函数,另一种是case搜索函数(1)第一种 格式 : 简单Case函数 :格式说明: case 列名 when 条件值1 then 选项1 when 条件值2 then 选项2… else 默认值 end示例: select case job_level when ‘1’ then ‘1111’ when ‘2’原创 2020-08-06 15:24:02 · 349 阅读 · 0 评论 -
flink state TTL(Time To Live) 如何应对飞速增长的状态?checkpoint机制原理?
在Flink的流式计算作业中,经常会遇到一些状态数不断累积,导致状态量越来越大的情形。例如,作业中定义了超长的时间窗口。对于这些情况,如果处理不好,经常导致堆内存出现 OOM,或者堆外内存(RocksDB)用量持续增长导致超出容器的配额上限,造成作业的频繁崩溃,业务不能稳定正常运行。从 Flink 1.6 版本开始,社区引入了 State TTL 特性,该特性可以允许对作业中定义的 Keyed 状态进行超时自动清理(通常情况下,Flink 中大多数状态都是 Keyed 状态,只有少数地方会用到 Opera原创 2020-07-30 15:30:25 · 1816 阅读 · 2 评论 -
flink配合druid连接池的使用
博主之前在flink集成连接池的使用,一直存在一个误区,就是为了减少程序对资源的创建,所有加载资源或者获取连接都放在了flink的open方法中,虽然这样可以减少资源的使用,也可以满足大多数场景,但是如:mysql的connection长时间不用,该connection 会被mysql数据库本身给回收。先简单介绍一下Druid:DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以原创 2020-05-28 16:14:49 · 8648 阅读 · 8 评论 -
解决Mysql连接8小时空闲失效问题
博主在之前的博文中发过一篇博客,是关于flink高性能写入mysql或者Oracle的问题,虽然写入的性能提高了,但是在接下来其他项目的开发过程中,遇到过连接connection失效的问题。博主的使用场景是这样的:博主的项目是做的实时推送的工程,每推送成功一条,就插入mysql一条数据,考虑到夜晚对用户推送,可能会对用户有打扰,所以在22~07不对用户进行推送,因此在这个空档期,mysql的连接是没有使用的,所以会报connection连接失效,至此,博主之前提到的高性能写入mysql的方案就行不通了,原创 2020-05-24 21:08:55 · 1127 阅读 · 0 评论 -
flink以gz格式写入hdfs
在flink的官方文档中,有读取gz文件的API,但是没有写入hdfs以gz格式写入的API,如果我们存储的数据量比较大,严重的占用我们的存储空间怎么办?博主在这里分享一下本人的做法。注意:博主的hdfs文件生成依赖于flink的checkpoint,如果在程序中不配置flink的checkpoint,该功能时无法实现的。package com.push.redis;import org.apache.flink.api.common.serialization.BulkWriter;import原创 2020-05-21 17:22:25 · 1172 阅读 · 0 评论 -
关于时序数据流经Kafka之后可能产生乱序的原因和解决方法
博主最近在做数据迁移的工作,但是在迁移的过程中遇到了一个问题,数据总是无缘无故的丢失,而且我的日志也没有报任何的错误异常信息,后经过排查,flink在消费kafka的时候我是通过事件时间处理数据的,有水位线的概念,由于kafka中的数据有大量的乱序现象,而且乱序的时间也比较严重,虽然写入数据的工作不是博主做的,但是抱着求知的心态,还是差了一下是什么原因会导致kafka中的数据出现乱序。kafka简介:Kafka 作为一个流行的消息队列,以分布式高性能,高可靠性等特点已经在多种场景下广泛使用。但在实际部署原创 2020-05-11 14:53:24 · 4461 阅读 · 0 评论 -
flink高性能写入关系型数据库Oracle或者MySql
相信从事大数据开发的人员,越来越多的人从事实时计算方向,flink技术就显示十分重要,说该技术重要,不仅仅是因为它的流式计算,更多的是和其他技术的整合比较强大,在开发过程中,除了写入消息中间件等场景,有的时候也需要写入传统的数据库,如Oracle或者MySql。我们习惯于连接关系型数据库的时候采用一些连接池如c3p0,在传统的业务开发或者数据量不是很大的时候,是没有问题的,但是在大数据量的情况,...原创 2020-05-07 18:16:49 · 3405 阅读 · 5 评论 -
听说redis集群没有pipeLine,看这里,博主带你重构redisCluter pipeLine
redis单机的管道模式,博主在这里就不给大家分享了,百度一下,单机redis的使用教程很多,但是redisCluster模式下,却没有自带的管道功能,因为博主最近做的写入redis的数据量比较大,多线程写入有时候会出现空指针异常,所以只能考虑管道模式,但是官网没有直接的使用方法,所以博主在这里分享一下本人的做法废话不多说,直接上代码package com.ctcc.framework.uti...原创 2020-04-22 15:33:54 · 408 阅读 · 1 评论 -
启动Hadoop没有dataNode进程的解决办法
1.问题现象:在启动Hadoop时,通过jps目录发现没有datanode进程。[root@hadoop ~]# jps1792 SecondaryNameNode1937 Jps1650 DataNode2 解决方案:clusterID不匹配导致的问题网上搜了下,网上的说法都是由于进行hadoop格式化的时候没有事先结束所有进程,或者多次进行了format导致的datanode的...原创 2020-03-26 15:24:35 · 3608 阅读 · 3 评论 -
四种方法带你解析xml文件和xml字符串
第一种:Dom4j解析优点1.是JDom的一种智能分支,它合并了很多超出基本XML文档表示的功能。2.Dom4j使用接口和抽象基本类方法,是一个优秀的Java XML API。3.具有性能优异,灵活性好,功能强大和极端易使用的特点。4.开放源代码。添加maven<dependency> <groupId>dom4j</groupId> ...原创 2020-03-02 21:56:22 · 1054 阅读 · 0 评论 -
redis集群工具类
package com.redis.utils;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;import redis.clients.jedis.JedisPoolConfig;import java.io.IOException;import java.util.Has...原创 2020-03-02 10:28:36 · 497 阅读 · 0 评论 -
azkaban安装教程
一.azkaban solo seerver模式1.优点:(1)易于安装:无需MySQL示例。它将H2打包为主要的持久存储。(2)易于启动:Web服务器和执行程序服务器都在同一个进程中运行。(3)全功能:它包含所有Azkaban功能。可以正常使用,也可以为其安装插件。2.环境准备CentOS7系统(关闭防火墙),JDK1.8以上版本。3.安装部署(1)解压缩azkaban solo...原创 2020-03-01 21:24:16 · 512 阅读 · 0 评论 -
linux文件的上传和下载(终端工具SCRT和XShell)
1.SCRT的上传下载yum安装 sudo yum install lrzsz打开SCRT终端工具,选择Options->Session Options之后会弹出如下画面:选择文件上传和下载的位置,点击OK即可。使用方式:# sz filename (发送文件到客户端,zmodem接收可以自行启动)# rz (从客户端上传文件到linux服务端)对于SCRT而言,文...原创 2020-02-28 09:11:04 · 782 阅读 · 0 评论 -
flink的六大keyState(Java语言和Scala语言描述)
1.valueStateValueState:这将保留一个可以更新和检索的值(作用域为输入元素的键,因此该操作看到的每个键可能会有一个值)。该值可以使用设置update(T)和使用检索 T value()。1.1 java语言描述valueState功能定义:对输入的数据数量统计,当数量达到2时,输出清零,之后继续统计。package javaState.valuestate;impo...原创 2020-02-21 22:46:35 · 1888 阅读 · 0 评论 -
flink的异步接口调用
同步接口的调用,是在接口响应之后,才能进行下一数据的请求方法,在接口性能不佳的情况下,严重影响flink的性能,这与flink的实时思想有违背,为了避免这种情况,我们在接口调用的时候,可以采取异步的方式。不废话,直接上代码,需要原理自行官方文档。AsyncDataStream.unorderedWait(dataSource, new HttpAsyncFunction("url"), 300...原创 2020-02-14 10:53:54 · 2666 阅读 · 1 评论 -
HttpUtils工具类
第一种此版本为基本的版本,可实现接口调用,发送数据,接受接口响应数据,请求方式为post /** *date 传递的json数据 *port 接口地址 *return 返回的json数据 */ public static JSONObject doPost(JSONObject date, String port) { HttpC...原创 2020-02-14 10:35:21 · 829 阅读 · 0 评论 -
马踏棋盘算法(骑士周游问题)
关于什么是马踏棋盘,伙伴们可以自行百度,关于4399还有小游戏思路分析:package com.self.tenAlgorithm;import java.awt.*;import java.util.ArrayList;import java.util.Scanner;public class Demo7 { private static int X; // 棋盘的列数...原创 2020-02-07 21:32:46 · 237 阅读 · 0 评论 -
Java十大算法之弗洛伊德算法
1.弗洛伊德(Floyd)算法介绍:(1)和Dijkstra算法一样,弗洛伊德算法也是一种用于寻找给定的加权图中顶点间最短路径的算法,与迪杰斯特拉算法的区别是:迪杰斯特拉算法通过选定的被访问点,求出从出发访问顶点到其他顶点的最短路径.弗洛伊德算法中每一个顶点都是出发访问点,所以需要将每一个顶点看做被访问顶点,求出每一个顶点到其他顶点的最短路径.2.思路分析设置顶点vi到顶点vk的最短路径已知...原创 2020-02-07 16:47:22 · 384 阅读 · 0 评论 -
Java十大算法之迪杰斯特拉算法
现有场景:最短路径问题战争时期,胜利乡有7个村庄(A,B,C,D,E,F,G),现在有六个油差,从G点出发,需要分别把邮件分别送到A,B,C,D,E,F,G六个村庄,各个村庄的路基用边线表示权,比如A–B距离5公里,问:如何计算出G村庄到其他各个村庄的最短距离?1.迪杰斯特拉算法迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径,它的主要特点是以起始...原创 2020-02-07 14:38:49 · 440 阅读 · 0 评论 -
RabbitMQ安装CentOS7及Producer和Consumer
安装环境准备:linux环境下,CentOS7操作系统,关闭防火墙(切记).1、安装运行环境RabbitMQ运行运行环境,因为RabbitMQ使用erlang语言开发,所以我们首先安装erlang.rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm2、安装RabbitMQ...原创 2020-02-06 22:41:13 · 103 阅读 · 0 评论 -
Java十大算法之克鲁斯卡尔算法
应用场景:1.克鲁斯卡尔算法介绍克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法,基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路,具体做法:首先构造一个只含有n个顶点的森林,然后依权值从小到大从连通网中选择边加入到森林中,并使森林中不产生回路,直到森林变成一棵树为止接下来用图解的方式进行一下分析:上面的连通网,不同的连通方式,权值总和...原创 2020-01-15 23:51:38 · 616 阅读 · 0 评论 -
Java十大算法之普里姆算法
场景:修路问题有胜利乡7个村庄(A,B,C,D,E,F,G),现在需要修路把7个村庄连通,各个村庄的距离用边线表示(权),比如A-B距离5公里,问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短?先介绍一下最小生成树:最小生成树(Minimum Cost Spanning Tree),简称MST,给定一个带权的左向连接通图,如何选取一颗生成树,使树上所有边上权的总和为最小,这叫最...原创 2020-01-15 22:57:03 · 533 阅读 · 0 评论 -
Java十大算法之贪心算法
现有场景:假设存在下面需要付费的广播电台,以及广播台信号可以覆盖的地区,如何选择最少的广播台,让所有的地区都可以接受到信号1.贪心算法介绍贪心算法(贪婪算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择,从而希望能够导致结果最好或者最优的算法,贪婪算法所得到的结果不一定是最优的结果(有时候是最优解),但是都是相对近似最优解的结果贪心算法最佳应用----集合覆盖对上面的...原创 2020-01-15 16:49:39 · 1482 阅读 · 0 评论 -
Java十大算法之KMP算法
场景:字符串匹配问题有一个字符串 a="abcdefg"和另一个字符串b=“bc”,现要判断a里面是否包含b,如果存在,返回第一次出现的位置,如果不存在,返回-1.传统解决方案:暴力匹配算法思路分析:(1)如果当前字符匹配成功,则i++,j++,继续匹配下一个字符(2)如果匹配失败,使i = i - (j - 1),j = 0,相当于每次匹配失败时,i回溯,j被置0代码实现packa...原创 2020-01-15 15:21:09 · 208 阅读 · 0 评论 -
Java十大算法之动态规划算法
动态算法的应用场景:1.动态规划算法介绍(1)动态规划(Dynamic Programming)算法的核心思想是:将大问题划分成小问题进行解决,从而一步步获取最优解的处理算法(2)动态规划算法与分治算法类似,其基本思想也是将待求问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解(3)与分治算法不同的是,适合于动态规划求解的问题,经分解得到子问题往往不是相互独立的(即...原创 2020-01-14 23:08:10 · 1387 阅读 · 0 评论 -
Java十大算法之分治算法
1.分治(Divide-and-Conquer)算法介绍分治算法是一种很重要的算法,字面上的解释是’分而治之’,就是把一个复杂的问题分解成两个或更多的相同或相似的问题,再把子问题分成更小的子问题…,直到最后子问题可以简单的直接求解,原问题的解即是子问题解的合并,这个技巧是很多高校算法的基础分治算法可以求解的一些经典问题:二分搜索,大整数乘法,棋盘覆盖,合并排序,快速排序,线性时间选择,最接近点...原创 2020-01-14 22:28:05 · 715 阅读 · 0 评论 -
Java十大算法之二分查找算法(非递归)
在前面的排序算法里面博主提到过二分查找算法,是使用递归的方式,下面博主分享一下二分查找算法的非递归方式1.二分查找算法介绍二分查找法只适用于从有序的数列中进行查找(比如数字,字母),将数列排序后再进行查找,二分查找法的运行时间为对数时间O(log2n),即查找到需要的目标位置最多只需要log2n步,假设从[0,99]的队列(100个数,即n=100)中寻找目标数30,则需要查找步数为log2 ...原创 2020-01-14 21:49:59 · 143 阅读 · 0 评论 -
数据结构之图及两种遍历(深度优先和广度优先)
为什么要有图?前面我们学到了线性表和树,线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个直接前驱也就是父节点,当我们需要表示多对多的关系时,这里就用到了图1.图的基本介绍图是一种数据结构,其中节点可以具有零个或多个相邻元素,两个节点之间的连接称为边,结点也可以称为顶点,如图:2.图的常用概念(1)顶点(vertex)(2)边(edge)(3)路径:比如从D->C的...原创 2020-01-14 21:24:31 · 1352 阅读 · 0 评论 -
多叉树/多路树(2-3树,2-3-4树,B树,B+树,B*树)
虽然二叉树操作效率比较高,但是也存在问题,请看下面这颗二叉树二叉树需要加载到内存中,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多,就会有如下问题;(1)在构建二叉树时,需要多次进行I/O操作(海量数据存在数据库或者文件中),节点海量,构建二叉树时,速度有影响(2)节点海量,也会造成二叉树的高度很大,会降低操作速度1.多叉树(1)在二叉树中,每个节点有数据项,最多有两个子节...原创 2020-01-14 14:24:47 · 315 阅读 · 0 评论 -
数据结构之平衡二叉树(AVL树,左旋转,右旋转,双向旋转)
引入:看一下案例(说明二叉排序树可能存在的问题)数列{1,2,3,4,5,6},二叉排序树(BST)的形式为平衡二叉树基本介绍(1)平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree),又被称为AVL树,可以保证查询效率比较高.(2)具有以下特点...原创 2020-01-13 22:20:18 · 1373 阅读 · 0 评论 -
数据结构之二叉排序树
1.二叉排序树介绍二叉排序树(Binary Sort Tree),对于二叉排序树的任何一个非叶子结点,要求左子结点的值对比当前节点的值小,右子节点的值比当前节点的值大特别说明:如果有相同的值,可以将该节点放在左子节点或者右子节点二叉排序树的创建和遍历package com.self.dataStructure.binarySortTree;public class binarySor...原创 2020-01-13 17:37:53 · 209 阅读 · 0 评论 -
算法之赫夫曼编码(压缩文件解压文件)
1.赫夫曼编码基本介绍(1)赫夫曼编码(Humffman Coding)是一种编码方式,属于一种程序算法,是赫夫曼树在电讯通信中的经典应用之一,广泛的用于数据文件压缩,其压缩率通常在20%~90%之间,赫夫曼编码是可变字长编码(VLC)的一种,Huffman于1952年提出一种编码方法,称为最佳编码.传统编码:(1)定长编码(2)变长编码赫夫曼编码原理剖析(1)传输的字符串(2...原创 2020-01-13 16:44:01 · 372 阅读 · 0 评论 -
数据结构之赫夫曼树
1.赫夫曼树基本介绍(1)给定n个权值作为n个叶子结点,构造一颗二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)(2)赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近概念介绍(1)路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或者孙子结点之间的通路,称为路径,若规定根节点的层数为1,则从根节点到第L层的路径...原创 2020-01-13 10:25:04 · 218 阅读 · 0 评论 -
堆排序(二叉树的实际应用)
1.堆排序的基本介绍(1)堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度为O(nlogn),它也是不稳定排序(2)堆具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆,注意:没有要求结点的左孩子的值和右孩子的值的大小关系(3)每个结点的值都小于或者等于左右孩子结点的值,称为小顶堆大顶堆举例说明:小顶堆举...原创 2020-01-12 23:50:42 · 407 阅读 · 0 评论 -
数据结构之线索化二叉树
问题分析:将数列{1,3,6,8,10,14}构建成一颗二叉树当我们对上面的二叉树进行中序遍历时,数列为{8,3,10,1,6,14},但是6,8,10,14这几个节点的左右指针,并没有完全利用上,如果我们希望充分利用各个节点的左右指针,让各个节点可以指向自己的前后节点,怎么办? (线索化二叉树)线索化二叉树的基本介绍(1)n个结点的二叉树链表中含有n+1 [公式2n-(n-1)=n...原创 2020-01-12 22:30:52 · 172 阅读 · 0 评论 -
数据结构之顺序存储二叉树
1.顺序储存二叉树的概念从数据储存来看,数组储存方式和树的储存方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看一下示意图顺序储存二叉树的特点(1)顺序储存二叉树通常只考虑完全二叉树(2)第n个元素的左子节点为2n+1(3)第n个元素的右子节点为2n+2(4)第n个元素的父节点为(n-1)/2其中:n表示二叉树中的第几个元素(按0开始编号),如上图所示现需求:pac...原创 2020-01-12 19:23:12 · 792 阅读 · 0 评论 -
数据结构之二叉树
1.为什么需要树这种数据结构(1)数组储存方式分析:优点:通过下标的方式访问元素,速度快,对于有序数组,还可以使用二分查找来提高检索速度缺点:如果要检索某个具体值或者插入值,会整体移动,效率低(2)链表存储方式分析优点:在一定程度上对数组储存方式有优化,如插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好缺点:在进行检索时,效率任然较低.(3)树储存方式分析能提高...原创 2020-01-12 12:02:21 · 121 阅读 · 0 评论