- 博客(47)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Spark比MapReduce快的原因是什么
与 Hadoop 的 MapReduce 相比, Spark 基于内存的运算是 MapReduce 的 100 倍.基于硬盘的运算也要快 10 倍以上.Spark 实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流那Spark为什么快呢?1、消除了冗余的HDFS读写Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到...
2020-02-26 18:04:00
1324
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Flink的分布式快照(检查点算法)原理--基于Chandy-Lamport算法
Flink的恢复机制的核心就是应用状态的一致性检查点,有状态流的一致性检查点,其实就是所有状态在某个时间点的一份快照拷贝,而这个时间点应该是所有任务都恰好处理完同一个输入数据。**Flink使用的检查点算法是分布式快照算法(基于Chandy-Lamport算法的分布式快照)**检查点的两种实现:(1)检查点算法的简单实现–暂停应用,保存状态到检查点,在重新恢复应用(2)Flink基于检...
2020-02-26 14:38:20
2433
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Zookeeper选举机制及生产状态Zookeeper安装台数规划
选举机制(2n+1)在实际生产中根据集群规模安装zk台数经验如下:10-3 20-5 100-11(左为集群规模,右为zk规模)1)半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。2)Zookeeper虽然在配置文件中并没有指定Master和Slave。但是Zookeeper工作时,是有一个节点为Leader,其他则为Follower,L...
2020-02-21 14:03:29
642
原创 28查询有新注册用户的当天的新用户数量、新用户的第一天留存率(lead+rank+开窗函数)
使用lead+rank+开窗函数查询有新注册用户的当天的新用户数量、新用户的第一天留存率
2024-01-26 15:21:46
381
原创 hive使用中的参数优化与问题排查
grep ‘xxx’ 目标文件名file -A 5 匹配查找到的及以后的20行内容。hive的一个优化 set hive.fetch.task.conversion;hadoop文件系统复制到本地需要使用copyToLocal命令。在本地使用grep命令过滤出文件中出问题的行,以及其后的若干行,根据结果找到对应的文件名称,根据文件名称将文件复制到本地,lzo解压 lzop -dv xxx.lzo。1.使用hive的虚拟列排查错误案例。方便查看问题影响的范围。–文件中的块内偏移量。
2023-10-25 17:53:13
638
原创 hive函数总结
explode(map)使得结果中将map里的每一对元素作为一行,key为一列,value为一列,一般情况下,直接使用即可。regexp_replace(‘[{“website”:“www.baidu.com”,“name”:“百度”},{“website”:“google.com”,“name”:“谷歌”}]’, ‘\[|\]’,‘’),解析:参数1是传入的字段,参数二是正则‘()’内的才是真正要匹配出来的,参数3传入的数值是用于限定取得范围,–结果永远为null;”的ascii码对应的八进制数字代替。
2023-10-25 16:12:41
211
原创 clickhouse、Doris、Kylin对比
ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,是基于 MPP 架构的分布式 ROLAP (Relational OLAP)分析引擎主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告,可以支持任意指标、任意维度并秒级给出反馈。如果说两者不那么强的地方,ClickHouse的问题是使用门槛高、运维成本高和分布式能力太弱,需要较多的定制化和较深的技术实力,Doris的问题是性能差一些可靠性差一些,下面就深入分析两者的差异。
2023-10-25 14:05:04
822
原创 clickhouse、Doris、Kylin对比
ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,是基于 MPP 架构的分布式 ROLAP (Relational OLAP)分析引擎主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告,可以支持任意指标、任意维度并秒级给出反馈。如果说两者不那么强的地方,ClickHouse的问题是使用门槛高、运维成本高和分布式能力太弱,需要较多的定制化和较深的技术实力,Doris的问题是性能差一些可靠性差一些,下面就深入分析两者的差异。
2023-10-25 11:24:46
980
原创 43.间断连续登录用户问题
首先需要对数据做格式化和去重操作user_id,login_date。(3)给每一个会话的建立一个唯一标识(时间差不超过1天的标识相同)(4)user_id,flag分组下最大最小时间差就是连续登录时间。(1)同会话划分问题一样,先求上一次登录日期。本题特点在于间断一天登录也认为是连续登录。(2)对时间差打标签flag。
2023-10-16 15:49:42
85
原创 42.会话划分问题求解(打标)
(3)对flag开窗求和,属于同一会话的和相同。(2)为>60s的设置一个初始会话的标签flagif(view_timestamp - last_view_timestamp > 60, 1, 0) flag。(4)使用user_id与flag拼接会话id,结果就是相邻两次会话间隔不超过60s的id相同。(1)为每一次浏览找到他的上一次浏览时间。
2023-10-16 15:39:13
96
原创 40.同时最大在线人数问题求解(炸裂map)
(1)对登录、登出数据构建map结构map(1, login_ts, -1, logout_ts),使用炸裂函数对该map做炸裂处理。(2)炸裂后成为了两列,一列存储1or-1表示登录登出(k),一列存储的是时间,既有登录的又有登出的。(3)取出上一步计算出的最大值就是同时最大在线人数。按照时间排序求k的累计值,要求窗口范围到当前行。
2023-10-16 15:15:36
162
原创 2.查询至少连续三天下单的用户(连续登录问题求解)
(3)使用create_date与row_num求差值作为日期days字段,如果连续登录那么差值相同,(4)按照user_id与days分组计数求数量大于3的user_id就是连续登录用户。(2)开窗求user_id分组下按照create_date的排序号row_num。(1)求出每个user_id对应的create_date明细数据并去重。
2023-10-16 14:40:16
167
原创 hive中\u0001、\0001、\0010、\u0010等分隔符切割问题
hive中\u0001、\0001、\0010、\u0010等分隔符切割问题
2022-04-12 20:23:44
7364
原创 一文搞懂两表关联时left join 、 on 以及where条件不同写法对结果的影响--文末有结论
一文搞懂两表关联时left join 与 on 以及where条件不同写法对结果的影响–文末有结论1.数据准备(建议使用本地mysql)a表:b表:建表语句:Create EXTERNaL TabLE wlz_test_a(id int,name string,grade int,dept int)COMMENT ‘a’ROW FORMaT DELIMITEDFIELDS TERMINaTED bY ‘\u0001’ ;插入数据insert into wlz_test_a(
2021-05-19 17:54:26
2204
2
原创 hive join 时的bug,使用left join 可以规避
问题背景:使用 join on 1=1 拼接查询结果时,返回值是什么也没有;原因是 join 左右的两张表的分区有空的。查询历史数据时候容易遭遇。使用 join on (1=1)时如果后面的表查询的分区是空的那么最终结果也是空的。改用left join on 1=1 可以规避。即: a join b(NULL) on 1=1结果是什么也没有;a left join b(null) on 1=1 结果是左表的数据。...
2021-02-26 15:52:47
2498
原创 hive中使用正则及炸裂函数解析jsonarray的实现方法附正则表达式的使用举例
hive中使用正则及炸裂函数解析jsonarry的实现方法
2020-05-28 17:37:08
596
1
原创 hive 抽样查询
记录一个遇到的hive基于行数的抽样查询。行数被用在每个split中。因此总的行数根据输入的split数而变化很大。语法格式为:block_sample: TABLESAMPLE (n ROWS)例如下面的查询将从每个split中抽取10行:SELECT * FROM source TABLESAMPLE(10 ROWS);...
2020-05-28 15:02:58
282
原创 将查询结果日期时间通过unix_timestamp函数转换为时间戳
记录一个时间转换为时间戳的坑。先看代码1. select unix_timestamp(adddate) from xxx2. select unix_timestamp('adddate') from xxx来看结果1:2:在使用unix_timestamp()函数时只有是固定的日期时间情况下才可以加‘’ 或者“” 否则结果为null举例:select unix_timestamp('2020-05-16 13:22:02','yyyy-MM-dd HH:mm:ss')结果为:
2020-05-19 15:48:36
782
原创 Spark Job的构成及划分
由于spark的懒执行,在驱动程序调用一个action之前,spark应用不会做任何事情。针对每个action,Spark调度器就创建一个执行图(execution graph)和启动一个Spark Job。每个job有多个 stage组成,这些stage就是实现最终的RDD所需的数据转换的步骤。一个宽依赖划分为一个stage。每个stage由多个tasks组成,这些tasks就表示每个并行...
2020-04-01 14:22:55
3622
1
原创 Zookeeper 分布式一致性协议--ZAB协议
ZAB协议ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。在Zookeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,Zookeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性过程:1)leader接收到消息请求后,将消息赋予一个全局唯一的64位自增id...
2020-03-02 19:22:06
244
原创 JVM体系结构之类装载器--双亲委派及沙箱安全机制解析
JVM体系结构之类装载器–负责加载class文件双亲委派机制和沙箱安全机制主要是为了防止自己写的类与系统自带的冲突**·启动类加载器(Bootstrap)C++·扩展类加载器(Extension)Java·应用程序类加载器(AppClassLoader)也叫系统类加载器**.class文件由类加载器进行加载,这里有双亲委派及沙箱安全机制存在,class类首先进入应用程序类加载器,应用程...
2020-02-29 11:26:27
151
原创 详解使用Scala实现快排的方法
/** * 快排 * 时间复杂度:平均时间复杂度为O(nlogn) * 空间复杂度:O(logn),因为递归栈空间的使用问题 */def quickSort(list: List[Int]): List[Int] = list match {//使用模式匹配 case Nil => Nil//若列表为空则返回空列表 case head :: tail =>//...
2020-02-28 21:57:19
624
原创 ElasticSearch数据库(ES数据库)简介
一 elasticsearch简介**ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。**Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。1 elasticSearch的使用场景1、为用户提供按关键字查询的全文搜索功能。2、实现...
2020-02-26 20:37:23
30803
原创 Spark自定义分区器步骤以及Spark自定义分区器的应用
Spark自定义分区器要实现自定义的分区器,你需要继承 org.apache.spark.Partitioner, 并且需要实现下面的方法:1.numPartitions该方法需要返回分区数, 必须要大于0.2.getPartition(key)返回指定键的分区编号(0到numPartitions-1)。3.equalsJava 判断相等性的标准方法。这个方法的实现非常重要,Spar...
2020-02-26 20:20:54
1629
原创 Flink端到端一致性的保证(Flink到Kafka)-基于Paxos的Zab协议
有没有思考过这样的问题–在flink内部使用的分布式快照算法保证一致性的问题,那在flink运行的shangxiawen组件中一致性是怎么保证的呢?flink内–checkpoint实际生产中必须考虑端端一致性的保证,他的一致性级别取决于所有流程中一致性最弱的组件预写日志:针对于非关系型数据库–如es redis等两阶段提交:针对于关系型数据库...
2020-02-26 15:08:21
285
原创 使用Spark连接ElasticSearch 并保存数据的具体步骤
1.在ES 上建好索引其实即使不提前建立索引,ES也是可以将数据保存进去的。这种情况,ES会根据第一条要插入的数据进行推断,但是ES的这种推断往往不够准确。比如:要区分字段要不要进行索引,字段要不要进行分词,如果分词选用哪个分词器等等。建立索引语句(包含Mapping)PUT gmall_coupon_alert{ "mappings": { "_doc":{ ...
2020-02-25 14:45:06
1688
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人