自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Flink实时计算框架

如果并行度很高,而数据类别很少,那么一般只会有一个并行度来处理数据,这个并行度的waterMask水位线会随着数据提升,但是 由于其它并行度没有数据,他们的waterMask水位线一直是0,而waterMask的原理是 想要触发计算 我只能由你水位线最低的那个并行度来作为基准。这个不一定的,要看你的source是什么,比如你的source是kafka就不会丢失,他可以重复提取数据,但如果数据源是串口比如端口之类的,就会丢失。水印的出现就是为了应对数据延迟,数据乱序,来进行延迟计算。

2023-03-14 14:56:25 299 1

原创 spark shuffle·读写流程 和 rdd持久化

1.对比mapreduce和spark mapreduce里 map的第3条就是说,比如我存了很多条数据,如果一条一条写进磁盘,肯定有很多次IO,我先归并到一个缓存里面再溢写磁盘。spark与其的差别就是用map代替了buffer,因为map存的key唯一,用map的话可以直接完成combiner操作,且map的key里也有分区的key,避免了一定的排序操作。除此之外,spark溢写也是必须触发磁盘的但是多次利用的数据可以放入内存=======================================

2022-12-03 16:10:45 372

原创 spark-core-源码、Worker启动、sparksubmit提交、Driver启动

在提交我们写好的jar包时候,用到submit命令,他的源码解析流程如上图位于deploy里的SparkSubmit里面,根据main方法一点点run进去,分配我们传的参数,尤其是MainClass这个东西就是我们要先执行的一个位置,他根据我们设置的deploy-mode来进行选择在分配参数的时候,deploy-mode如果是client模式,直接MainClass为我们jar包去执行。

2022-11-24 09:42:18 503

原创 spark分布式计算框架

MapReduce是计算逻辑清晰的,只有两个步骤,任务是JVM进程级别,每执行到什么步骤 去申请具体的资源。而spark根本不知道具体有几个stage,逻辑未知,每个人的job stage等根本不知道。它是默认倾向于抢占资源的,他会在sparkContext()这个函数执行的时候,直接根据下面textFile()代码逻辑抢占所有资源,任务以JVM线程的级别泡在Excutor里面。

2022-11-18 19:54:45 1106

原创 链表算法套路

3. 设pre cur cur_next指针(主要就是这个pre)然后正常遍历pre = pre.next就行。返回的时候可以返回newHead.next;5. 哈希表永远是判断有没有重复的第一选择(判断环形)2. 设一个cur 一个cur_next。1. 两指针一起走 快慢指针。4. 递归yyds。

2022-11-18 09:30:37 76

原创 spark-core 源码

就是计算一下你读取的文件一共将分成多少个切片(或者说分区) 首先切片大小肯定小于物理文件块的大小用的是 InputFormat接口下的 FileInputFormat2.compute这个函数是指明 我已经分区好了,未来我这个计算要向分区所在的哪个地方移动去,也就是计算向数据移动 我要找文件所在物理块号这个函数其实返回的就是一个迭代器,里面有hasNext()和getNext()方法1. cartesian笛卡尔积笛卡尔积操作 cartesian函数。

2022-11-14 16:45:03 867

原创 那种输出全部组合的List<List<Integer>>题

这种因为是要输出全部可能的组合而不是组合的数量,所以一定要恢复现场 也就是回溯法最常见类型有 组合总和 1 2 3 4。

2022-11-14 10:45:44 349

原创 日志收集项目遇到的问题

是Hadoop版本3.3.x高了导致的兼容问题,要么就是hdfs进入安全模式了,但是实际上通过对hbase/conf/hbase-env.sh修改,去掉注释export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"后,可以再试试,成功执行。运行Hadoop的mr程序:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;主要是本地运行hadoop要添加本地的环境变量。

2022-11-06 20:18:24 869

原创 Hbase-LSM树

而LSM树它采用的是一种先把东西放内存这个是c0树,还有一个c1树用来存储合并结果的,他也放在磁盘里面(但他并不是最终的一个持久化结果),然后我每次c0存个差不多的时候, 我采用了一种追加合并的方式 合并到c1里面,批量存到磁盘里面。两边的东西我只是追加的形式插入数据,并不是修改的形式。由于我c0 c1都是有序的结构 最终存进磁盘里面也是有序的,所以我未来hfile合并直接归并查找,我读的时候也能用二分查找的方式,包括最后我读用了最小堆,它只需要查找到rowkey的一个起始行即可,就。

2022-10-24 17:14:11 552

原创 Hbase 表设计

首先要写一个表。

2022-10-24 10:59:47 1510

原创 搭建Hbase

1.解压2.删这个不影响3.改环境变量 vi /ect/profile4. 编写hbase-env解开注释 重新写一个javahome:!ls /usr/java 可以在vi界面搜索外面的东西。

2022-10-22 10:47:08 470

原创 Hbase

二 、 Hbase简介面向行就是 类似于mysql那种,一行存储许多字段,即使那个字段没有初始化,他也会给他占用存储空间,比较浪费面向列 后面说 但是他类似于k,v键值对非结构化数据 比如爬虫爬的html标签半结构化数据 json 每个json里面的kv都是不一样的结构化数据 就是mysql那种 每条信息的字段我都是自定义好的。

2022-10-20 17:10:49 284

原创 树的奇y巧技

w

2022-10-19 11:26:51 92

原创 路径总和问题

1. 方法就两种 普通dfs和 双层dfs(也就是for循环遍历每一个节点)2. 有的情况 比如你要操作到全局变量的时候 必须恢复现场。

2022-10-16 09:53:21 69

原创 边走边维护 一定要会的技巧

边走边维护,就是说,有时候你需要两层循环或循环两次才能做的一件事,你只用一次循环直接做完。思想就是 我平常喜欢把东西都处理好了再分配应该分配的东西。这个就是 边处理边分配,尤其是找最大东西。比如 求一个数组里面最大的两个数和。

2022-10-08 18:51:23 52

原创 动态规划-零钱兑换合集

322的零钱兑换,他要的是最小值,也就是说 index法和for循环森林法都可以用,因为即便森林法重复了!我在取最小min的时候 会过滤掉,只是我多算了一会儿而已。但是这个方法无法解决 要求你先后拿的钱顺序不一样那种题,比如 377的组合总和。518的零钱兑换,他要求的是一共多少取钱方法,我就不能用森林法,因为有重复序列。377的组合总和这种,对序列先后顺序要求严的 就用 for循环内部函数方法。也就是 森林法里面,我外部循环是 可变参数,内部是数组值。而518的dp 外部是数组值,内部是可变参数。

2022-10-05 20:01:12 97

原创 leetcode动态规划被虐

他要输出的是 真实的子串,不是他的子串长度。所以普通的递归解决不了问题。只能暴力列举法+递归递归 用 left和right 左右两边开弓 ,且记忆化搜索dp 按对角线一条一条填数据。

2022-09-28 17:15:26 99

原创 暴力递归到动态规划

精髓就是遵照题意,先写出暴力递归,然后可以发现有好多重复计算过程,浪费时间。这时候写一个dp缓存数组,将每一次暴力递归的结果存在dp里。这几种模型可以尝试动态规划。

2022-09-20 15:26:54 110

原创 暴力递归1

比如111可以是aaa或者11-->k变成ka所以在递归时候要分辨去取几个数来转化,且数字不能为0或大于26。

2022-09-16 14:58:56 73

原创 并查集和图

题目: 每个user有三个字段 a,b,c ,若俩个user中有任意一个字段相同,他们就是统一用户解法: 并查集 先找一下有没有相同的 发现相同立马union mapA就是a字段。

2022-09-14 15:02:37 83

原创 贪心策略2

如果i能放 i+1能放 那我肯定放在i+1的位置,且不用管他i+2位置能不能放,因为我i+1全包了,这时候index直接到i+3的位置。具体做法就是穷举法和那个方法的最终结果去比较,用不同的例子去比较,看答案是否一致。用小根堆先去找出 哪个项目我玩得起,把玩得起的放入大根堆中,再大根堆里找,最值的项目 我去玩。实在找不到的,就用对数器去验证他是正确的,常见比较器会用穷举法!就是自己分析,想几个贪心策略,找找反例去推翻他们。贪心策略:小根堆解决 别问为啥用小根堆 贪心策略解释你懂的。穷举法:(记得恢复环境!

2022-09-13 17:11:20 104

原创 数据结构与算法

1.判断是否为完全二叉树层次遍历法:(队列)2.递归法首先三个重要辅助条件首先2.给定两个节点 找他们的共同祖先思路二:递归这种递归返回的信息想要多少就多少,递归的套路就是 明确返回什么 以及这种结果应该怎么设置。

2022-09-08 14:58:57 107

原创 Zookeeper2

扩展性表现在框架的各种角色,zookeeper的角色主要是leader follower observer。其中读写分离严格,只有leader可以写,其他都是查询,但是follower可以进行选主投票,observer只能读1. 主要分两个场景2.选择标准:3.选主流程通常来说,只要准leader(myid和Zxid都最大)收到票,他就一定会广播自己,让所有人认可他,投票他watch监控机制就是启到监控其变化的作用设置锁要考虑以下几点......

2022-07-05 16:58:47 170

原创 分布式协调服务zooKeeper/ zookeeper使用

zookeeper分布式里面的锁与redis不同,他用session来控制,session在 锁在 session不在 锁不在。而redis看锁过期甚至要用线程来控制 上面的id都是事务id 每个连接会创建session 在那个zookeeper节点使用 creat -e /ooxx ""就会创建临时的,当这个连接挂掉后,刚才创建的也会消失掉1.新客户端创建连接时,会有一个session id。这个东西会通过leader然后传给所有节点,同时去走一个事务id。当客户端自己挂的时候,又会走一个事务删除在各

2022-07-02 09:12:15 56

原创 redis消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU

可以让通信io成本变低 缓存穿透就是,我想看看数据库里有没有东西,如果我直接看数据库去建立一个个连接太麻烦了浪费资源。所以先看内存告诉我有没有,如果内存说没有我还是去看了数据库,这就是穿透了。布隆过滤器就是防止这种现象,用小的空间,来解决大量匹配看有没有这个东西的问题...

2022-06-09 17:51:47 65

原创 redis的list、set、hash、sorted_set、skiplist

123

2022-06-08 17:38:05 51

原创 redis的string类型&bitmap

bitmap就是基于这种字节流,通过对存入的string键值对进行按位操作,通常都一位代表什么什么东西

2022-06-08 17:36:31 109

原创 Redis

2022-06-06 17:45:42 61

原创 17.Hive Serde、HiveServer2、Hive函数

就是hive在制定表的时候,可以设置一些读取数据的规则。分了两种 Serde和delimited但是delimited不能处理嵌套,比如array分割加map分割 这时候就需要Serde的正则表达式hive serve2hive函数

2022-05-31 09:34:39 92

原创 16.Hive的远程元数据服务模式安装及Hive SQL

配置远程元数据服务模式,关键是搭建服务端和客户端客户端通过访问服务端thrilled 然后服务端去访问mysql数据库1.服务器端hadoop103在hive-site.xml里配置远程数据库2.客户端不用访问数据库,配置访问服务端即可之后在服务器端启动schematool -dbType mysql -initSchemahive --service metastore客户端启动hivehive中sql的启用hive中创建数据库 create database

2022-05-07 15:47:59 156

原创 15.Hive的架构介绍及远程数据库模式安装

1.数据库和数据仓库的区别数据库接触业务数据,要求短时间内返回结果;数据仓库不需要,但肯定时间越短越好 数据仓库可以收纳各种数据源数据,比如将各类数据库(mysql oracle redis等都收纳进去)而数据库只能对应一条产品线 数据库里的数据可以修改 而数据仓库不能修改只能追加 就是旧版数据删不了 只能追加到后面2.Hive有解释器 编译器 优化器的原因解释器编译器是因为写Hive是写sql语句,但是运行是在yarn集群当中,这就需要yarn对sql进行解析等过程 优化器就是...

2022-05-05 20:47:54 1264

原创 剑指offer第二十七天-----数组中的逆序对**

这道题需要用到归并排序的思想 就是在排序的过程中,计算出里面的逆序对。每次划分成小区间,然后对里面的东西进行排序,这样一个个有序的小区间就会很方便计算。public class Solution { int count = 0; public int InversePairs(int [] array) { // 长度小于2则无逆序对 if(array.length < 2) return 0; ...

2022-01-27 11:25:54 270

原创 剑指offer第二十二天-----数组中重复的数字

拿到手就是用集合做,自己写的import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int duplicate (int[] numbers) { // write co..

2022-01-22 10:53:32 53

原创 剑指offer第二十一天-----字符串的排列*****

递归的思想import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Set;public class Solution { /** * 1、递归算法 * * 解析:http://www.cnblogs.com/cxjchen/p/3932949.html (感谢该文作者!) * * 对于无重复...

2022-01-21 10:12:51 42

原创 剑指offer第二十天-----数字序列中某一位的数字

思路:数学先观察数字规律小于10,1~9,9个数字,9位小于100,10~99,90个数字,180位小于1000,100~999,900个数字,2700位各个区间的下限上限是[0,10),[10, 100),[100,1000)...位数是1,2,3...从第1个区间的上限开始进行比较,如果大于上限,将上下限*10,将n=n-(上限-下限)*位数 直至找到n所在的区间找到区间后,n/位数 找到所在的数字,然后n%位数,找到数字的第几位数字通过上限+数字所在区间位置...

2022-01-20 10:34:41 158

原创 剑指offer第十九天-----旋转数组的最小数字

常规的搜索题 拿到手就是二分查找这道题思想关键是二分的判断与改变,如果中间值<end值,说明右边序列处于那个递增状态中,最小值在左边,end=mid 如果中间值>end值,说明右边的序列已经由于旋转被改变顺序,所以start=mid+1; 关键是有一个中间值==end值的情况,这种情况很复杂,以上两种情况都可能发生。比如2 2 2 1 2或者1 0 1 11,这种情况下mid的右边就很怪 所以就需要直接让end=end-1 再慢慢判断import java.util.Arr...

2022-01-19 16:05:42 167

原创 剑指offer第十八天-----二维数组中的查找

除了暴力解法还有二分法的思想,二分主要是找到一个中间值与其作对比,在这个二维数组里的中间值肯定是那个不大不小的点,就是边角点,这个时候可以考虑到 右上角和左下角点,从这个点开始判断:目标值比其大就往下走,行数++ 目标值比其小就往左走,列数--这里面也有二分法的思想,二分查找在判断之后会改变strat与end的值,这样一大截没用部分就不会计入考虑,这道题思想也是雷同,由于前后左右都是有序的,所以每走一步都会抛弃一大部分,减少判断数量。代码如下:public class Solution..

2022-01-19 11:05:11 265

原创 剑指offer第十七天-----数字在升序数组中出现的次数

拿到手肯定是折半查找,第一次做是直接找到一个位置,然后向前向后搜索其他一样的值,这样的时间复杂度还是不低。public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length==0) return 0; int len=array.length; int low=0, high=array.length-1;int mid=(high+l...

2022-01-17 10:24:23 345

原创 剑指offer第十六天-----滑动窗口的最大值

题目如下:拿到手只想到了暴力解法,就是每次移动窗口,移动之后再查看一下当前窗口里的最大值。时间复杂度较大,为O(n*k) k为移动窗口大小。代码如下:class Solution {//参考牛客官方解答codepublic: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { vector<int> myret; .

2022-01-16 11:24:14 36

原创 剑指offer第十四天-----翻转单词序列

挺简单的一道,但是有新收获拿到手直接想到用栈import java.util.Stack;public class Solution { public String ReverseSentence(String str) { if(str==null) return str; Stack<String> stack=new Stack<>(); String[] strs = str.sp.

2022-01-14 10:34:06 102

空空如也

空空如也

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

TA关注的人

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