- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 spark读取数据性能提升
spark默认的jdbc只会用单task读取数据,读取大数据量时,效率低。本文阐述了如何利用分区字段对数据进行划分,增加task数量,提升性能
2024-09-18 11:34:41
749
原创 Spark写入Hive报错Mkdir failed on :com.alibaba.jfs.JindoRequestPath
如果程序出现了一些“灵异”现象,很有可能,问题出现在你一开始就忽略的地方。
2023-05-31 17:44:34
1302
1
原创 Clickhouse 为什么Projection不生效
本文介绍Clickhouse Projection失效的原因,列举了一些失效案例,并对Projection触发条件进行总结和分析。
2023-03-02 16:06:56
809
2
原创 Clickhouse 消除由group by产生的间隙
针对由group by产生的间隙问题,如时间不连续,本文提供了一种从Clickhouse层面的解决思路
2022-06-28 22:46:05
832
18
原创 Clickhouse 从S3/Hive导入数据
我们的埋点数据上传到S3,大概是每天10亿条的数据量级别。最近花了一些时间思考和学习如何将每天如此大量的数据从S3导入到Clickhouse,为后续的实时查询做准备。
2022-06-23 20:25:09
2216
2
原创 Spring Data Jpa返回自定义对象的三种方法
本文针对不同使用场景介绍Spring Data Jpa返回自定义对象的三种方法,按需食用
2022-04-21 20:03:53
10303
6
原创 Yarn主导资源公平性调度算法
最近在看《Hadoop权威指南 第4版》,其中对主导资源公平性的介绍可能由于翻译原因,出现了一处错误,经查资料理解了drf算法。希望本文能帮助到同样在读此书并对此处有疑惑的同学。
2022-04-18 22:48:34
3219
原创 从一线城市回家工作的体验
去年6月份我辞去了广州一家国企的铁饭碗,回到惠州工作也有一段时间了。这篇文章其实酝酿了很久了,迟迟没有动笔是因为掺杂了一些复杂的感情,我觉得很难做出客观理性的描述。但是想想,自己写博客的初衷本来就是为了记录当下遇到的一些问题、解决办法以及新学习到的知识而已,从来也没有多客观过。所以借着今天三八妇女节放了半天假,又因为疫情不能出去玩,无聊干脆码码字。 虽然之前的文章有交代过,不过还是再提一嘴,我之前服务于一家航空公司,离职的原因挺多的,但是选择回惠州倒是很简单,因为当时面试...
2022-03-08 23:09:15
9829
3
原创 Clickhouse MergeTree排序键建立后还能修改吗?
这个问题需要分情况讨论,首先有2个前提:MergeTree主键建立以后是不能修改的主键必须和排序键一致或是排序键的前缀,即主键是A,排序键可以是A或(A,B),但不能是B
2022-03-07 21:57:34
5712
2
原创 Clickhouse MergeTree分区原理
MergeTree简介MergerTree(及其家族)是Clickhouse最强大的表引擎。发生insert操作时,MergeTree以数据片段的方式快速写入数据,后台线程会定期以一定规则对数据片段进行Merge。在大数据场景中,相比在插入时不断修改(重写)已存储的数据,这种策略会高效很多。更多介绍可以详见官网。
2022-02-25 21:32:13
712
原创 Clickhouse 空缺值处理
由于这样那样的原因,我们从各个端收集回来的数据不一定是完整的,经常会碰到某些关键字段缺失的情况。如果做一般的大数据分析或者数据可视化,小部分的缺失其实影响不大,在预处理把含有空缺值的整条数据删掉就行了。但是也有一些特定的场景下不能这么简单了事,需要对数据进行补全。本文介绍在clickhouse中进行空缺值处理的几种方法。
2022-01-14 23:16:56
5173
1
原创 Clickhouse表连接
背景 datas表是原始数据表,现在要对datas表中的app类型进行分析。于是需要建立一张app名称与app类型关系表,对两张表进行连接查询。方案一简单粗暴,直接建立关联表,直接进行join关联。--建立关联表create table app_type_mapping(`m_app` String,`m_type` String)ENGINE = TinyLog--插入数据insert into app_type_mapping values('app...
2021-12-03 17:37:55
5863
1
原创 Clickhouse将json拆分成列
背景 前段时间在做一个功能,中间有个环节是需要将一个json自由文本字段从大宽表中抽取出来,转换成列,以便后续的计算和分析。 json文本格式如下:{ "launch_time": "3;5;1", "date": "2021-01-02", "total_time": "72;34;0", "pkg": "com.android.launcher;com.android.settings;com.google.android.set...
2021-11-29 22:16:12
4706
1
原创 clickhouse入门学习笔记
clickhouse简介 2016年,俄罗斯Yandex开源,列式存储数据库,底层是C++,用于在线分析处理查询(OLAP)。Clickhouse提供了相当丰富的内置函数满足不同业务需求,并且具备高吞吐低延时的特点,官网称简单查询,clickhouse的处理速度大约是1-2亿行每秒。另外,clickhouse的官方文档是我见过最简单明了的开源文档。行式存储适合插入、更新和删除场景列式存储适合查询场景(想查年龄这列,直接拿出来就行)clickhouse的缺点:没有完整的事务支持。
2021-11-26 11:17:14
886
原创 Hadoop学习笔记二 集群环境搭建
rm -rf test.txt零、准备工作 准备一台虚拟机工具(vmware和virtualbox都行),装3台Linux虚拟机,本文装的是CentOS7。 集群规划: hadoop001 192.168.164.10 hadoop002 192.168.164.20 hadoop003 192.168.164.30 HDFS集群 NameNode ...
2021-08-08 23:28:19
744
2
原创 Hadoop学习笔记一
大数据简介大数据是指无法在一定时间内用常规软件工具进行捕捉、管理和处理的数据集合。是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。目前大数据技术已经广泛应用于众多行业,如仓储物流、电商销售、汽车、电信、生物医学、人工智能、智慧城市等等。大数据的特点(5V)Volume(大量)数据单位:GB -> TB -> PB -> ZB -> YB -> BB -> NB -> DBIDC预...
2021-08-08 12:11:00
521
1
原创 生活中的死锁
前言死锁的定义:在并发计算中,死锁是一种状态,在这种状态下,组中的每个成员等待另一个成员(包括自己)采取行动,例如发送消息或更常见的释放锁。死锁产生的四个条件: 1.互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2.请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有 3.不可剥夺,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放 4.循环等待,即存在一个等待队列:...
2021-06-13 09:55:18
2972
3
原创 在国企工作的体验和对于未来的思考
今天是个晴朗的日子,阳光很温暖,我独自坐在椅子上,静静地享受安详惬意的午后时光。一切是那么平静以至于我的思绪开始漫无目的地游走。我看到了一个画面:自己很老很老,老得快要死掉了,我坐在椅子上,阳光跟今天一样的温暖,我思绪游走,漫无目的地回顾着自己的一生。我近两年有个习惯,当感觉自己焦虑或者迷茫的时候,就会找个安静的小角落(一般是在房间靠窗户的位置)放空自己,想象自己变成一个小人儿,在一条长长的时间轴上奔跑,跑到10年后的那个节点,站在那里往回看,然后慢慢地想清楚10年后的我想要什么,她希望现在的我去做些什
2021-05-10 17:40:36
523
5
原创 《计算机是怎样跑起来的》读书笔记
今天,计算机正在以惊人的速度发展变化着,变得越来越复杂,而这期间产生了许多技术,但是人们并没有过多的时间去深入学习每一门技术,这就是问题的根源。稍微看了看技术手册,只学到了表层的使用方法,觉得自己“反正已经达到目的了”,这就是现状。如果仅仅把技术当作一个黑盒,只把时间花在学习其表面上,而并没有探索到其本质,就绝不应该认为自己已经“懂”了。不懂的话,做起来就会感到没意思,也就更不会产生想要深入学习的欲望了。计算机的三个根本性基础1. 计算机是执行输入、运算、输出的机器2. 程序是指令和数据的.
2021-03-20 17:19:25
477
原创 DCL单例为什么要加volatile?
问题分解这个问题简单来说就是:在高并发的情况下,DLC双重检验也不能保证由于指令重排导致的线程获取到未完全初始化对象的问题,需要利用volatile禁止重排的特性来保证单例的线程安全。要理清楚这个问题,首先要理解什么是单例;什么是volatile;以及多线程和实例化对象底层原理。单例是什么?老规矩,先贴一段维基百科的定义。(PS:贴英文不是为了装逼,只是个人觉得英文下定义主干会放在前面,理解起来更加清晰一点)Insoftware engineering,thesingleton...
2021-03-08 09:51:12
1101
1
原创 算法:两个栈实现一个队列
思路一:简单暴力法push():往栈1添加元素pop():把栈1的元素全部导入栈2,弹出并返回栈2的第一个元素,把剩下的元素倒回栈1push时间复杂度:O(1);pop时间复杂度:O(n)图解:push(1) => push(2) => push(3) => pop() => pop() => push(4) =>pop()思路一简易实现:import java.util.Stack;public class StackToQueue {
2020-10-27 21:13:15
1017
1
原创 红黑树从根出发,溯本求源
技术这种东西真的很奇妙,当你找到一个点去研究,然后就会发现带出来的知识点越来越多,越来越有趣。这个过程就跟反腐一样,抓到一个带出一窝,贼刺激! 这不合适,换个比喻。这个过程就像挖宝藏一样。因为上一篇写HashMap,挖到了红黑树这个知识点一时间不知道怎么组织语言,然后就从红黑树开始往前顺着二叉排序树(BST)挖到了远古时代的二叉树,往后挖到了时下数据库索引流行的B-树和B+树,还有暂时不知道什么软件或框架有用到的B*树。我也是最近才对“学无止境”这句话有了一点体会。以前我幼稚的看法是:技术它就在那里不.
2020-10-18 22:33:48
250
原创 HashMap底层数据结构源码解析(基于JDK1.8)
HashMap应该是每个Java程序员日常开发都很熟悉的集合类型,使用也很简单,不赘述。import java.util.HashMap;public class HashMapTest { public static void main(String[] args) { HashMap<Integer,String> user = new HashMap<>(); //往HashMap里面存放数据 user.put(
2020-09-23 23:52:19
888
原创 解决Jekins打包报错Failed to execute goal....
报错信息[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.5.RELEASE:repackage (repackage) on project ndc172: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.2.5.RELEASE:repackage failed: Plu
2020-09-03 17:25:07
4663
原创 解决Vue访问SpringBoot报错No ‘Access-Control-Allow-Origin‘ header
问题描述:最近在做一个API测试的网站,自学Vue简单搭建了个前端,用axios访问后台SpringBoot项目,访问不通,浏览器报错如下:Access to XMLHttpRequest at 'http://localhost:7070/postfairy/airShopping' from origin 'http://localhost:8081' has been blocked by CORS policy: Response to preflight request doesn't
2020-07-06 12:40:32
3049
原创 策略模式——一次真实的代码重构记录
背景简介我目前所在的项目组,支付这一大块是根据业务流进行划分的,不同的业务流由不同的开发人员进行开发和管理。也就是说,比如A负责销售业务,B负责售后业务,C负责附加产品业务,那么新增一种支付方式,A、B、C三个人就都要对这种支付方式进行开发。于是产生了不同业务对同一种支付方式的支持程度不一致的问题,比如销售业务已经支持微信和支付宝方式进行支付了,但是售后业务支付却还不支持。我是负责售后这块的开...
2020-04-12 18:46:51
366
原创 dubbo服务注册成功,消费者报错No provider available 原因探索
报错:Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.[2020-01-07 23:39:52.098] [main] [ERROR] [org.springframework.boot.SpringApplicat...
2020-01-17 23:39:22
3743
4
原创 Electron01--简介和超级详细的安装过程
最近在开发一个项目组内部用的接口自动化测试工具,考虑到生产环境无法连接外网,而且这个工具最好是不需要部署到额外的服务器,即装即用的。所以搜索了一下有什么可以方便快捷开发跨平台桌面应用程序的办法,发现了Electron这个强大的开源库。最近还在学习,遇到了一些坑,所以决定把学习到的内容和遇到的坑及其解决办法记录下来。1.Electron简介Electron是由Github开发,使用HT...
2019-11-24 18:39:52
1347
2
原创 Java以绝对路径和相对路径的方式读取文件
1. 绝对路径的方式读取文件这个很简单,就是用大家熟悉的File类加载文件,然后用输入流读取文件内容就可以了。import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamRe...
2019-11-10 17:42:33
3321
原创 JVM之堆栈内存模型详解
1.JVM内存模型JVM内存模型主要分为三大块:类装载器、运行时数据区(重点)、执行引擎。--类装载器:代码被编译器编译后生成的二进制字节流(.class)文件后,类加载器把Class文件加载到内存,并进行验证、准备、解析、初始化,能够形成被JVM直接使用的Java类型。--运行时数据区:主要分为栈、本地方法栈、程序计数器、堆、方法区五个部分--执行引擎:类加载器将Class文件读...
2019-09-26 22:11:37
1133
原创 JVM概述
1.什么是JVM众所周知,java是一门跨平台的高级语言,不同的平台(比如Windows和Linux)实际上需要的二进制代码时不一样的,而JVM从软件层面帮我们屏蔽掉了底层硬件和指令层面的细节,从而实现java的平台无关性。JVM官方文档:https://docs.oracle.com/javase/specs/2.JDK、JRE和JVM的关系可以用官方的一张图来理...
2019-09-25 23:14:18
110
1
原创 Readhat离线安装Apache(附安装包网盘链接)
1. 上传相关安装包把下面的安装包上传到Linux服务器/usr/local目录下(上传目录可自行选择)安装包网盘地址:https://pan.baidu.com/s/1YPfpJIe6nxwTCJwnq83H4w2.检查Linux是否已经安装openssl(若已经安装,跳过第3步)openssl version -a3.安装openssl执行以下指令安装o...
2019-09-17 23:22:19
339
原创 Spring核心--IOC
1. IOC的概念控制反转(Inversion of Control,缩写为IoC),是Spring的核心理念之一,可以用来减低计算机代码之间的耦合度。Spring用的是最常见的方式叫做依赖注入(Dependency Injection,简称DI)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。2.程...
2019-09-08 07:57:03
171
1
原创 Spring核心--基础篇
1.Spring学习资料Spring官网:https://spring.ioSpring4参考文档:https://docs.spring.io/spring/docs/4.3.23.RELEASE/spring-framework-reference/htmlsingle/Spring4 下载:https://repo.spring.io/libs-release-loc...
2019-09-08 07:32:44
136
原创 Java设计模式--代理模式
1. 代理模式的引入王大爷借了小李1.5亿,小赖是个无赖横竖就是不还钱,王大爷身子弱讨不回钱就请了讨债公司的小强,最后小强通过一系列**(过于残暴被打码了)的手段帮助王大爷讨回欠款。完事后还帮王大爷做了封口的工作。这个场景中,小强就是一个代理的存在。2.静态代理模式的实现package test;public class TsetProxy { public static v...
2019-09-04 23:16:36
159
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人