自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

道可道非常道

博客涉及数据仓库架构、数据应用设计、机器学习及大数据框架深入分析

  • 博客(497)
  • 资源 (6)
  • 收藏
  • 关注

原创 Kimball维度模型之构建数据仓库先决条件

成功的DW/BI项目通常共享上述一系列关键特征,而失败的项目则往往面临各种问题,其中一些问题可以总结自数据仓库专家Kimball的观点。失败的DW/BI项目因素:失败的项目往往出现在业务发起人缺乏深刻业务理解或技术发起人无法有效沟通业务需求的情况下。成功的项目通常建立在业务和技术团队紧密协作的基础上,而弱势的业务或技术发起人可能导致沟通障碍和项目目标的偏离。例子:在一个以技术为主导的项目中,业务发起人可能无法有效传达业务需求,导致最终交付的数据仓库无法满足真实业务场景。

2024-03-09 02:42:50 1035

原创 Flink源码分析(5)JobMaster启动源码分析

​ Flink JobMaster源码启动入口从Dispatcher.runJob()方法处开始,下面让我们一起进入到JobMaster的源码分析中。这里启动jobmaster服务,注册心跳同时创建了监听服务,在jobmaster内部创建了slotpool,用于维护整个任务的资源。内执行了jobgraph到executiongraph的转换操作,这块内容见ExecutionGraph源码分析;方法,跟踪jobmaster启动过程中都做了哪些具体操作。之后会跳转到Task.run()开始执行Task。

2024-04-26 00:53:15 655

原创 Flink源码分析(3)Flink-Per-job Yarn集群启动前期准备源码分析

这段代码在启动ApplicationMaster之前做了各种检查,包括用户权限、内存、路径、yarn队列等等,在检查条件通过后通过。发现createClusterDescriptor方法是一个抽象方法,因为本文追踪Per-Job模式,所以由。在startAppMaster对启动应用设计的环境信息、配置信息和依赖信息和安全信息等进行了详细的配置,其中。Yarn集群描述器封装了yarn运行的基本配置信息,返回赋值到clusterDescriptor。向yarn提交任务;是启动AM的入口类,继续追踪。

2024-04-25 20:18:07 508 1

原创 Kimball维度模型之数据仓库模型治理

本文所描述的场景,其核心在于对现存数据仓库任务产生的潜在影响。而与之形成鲜明对比的是,笔者另外两篇文章的核心观点是:模型的发布或变更并不会对存量数据造成任何影响。这种差异为我们提供了一个更为宏观的视角,即篇头所提及的三篇文章共同构成了数据仓库建设的顶层逻辑。只要我们稍微深入学习Kimball的设计原则,并结合笔者的这三篇文章作为理论支撑,按照这些规范来设计数据仓库,就能构建出一个相对健壮、稳定的数据架构。事实上,平地起高楼并非想象中的那么困难,关键在于我们是否掌握了正确的方法和原则。

2024-04-11 18:23:36 1055

原创 一种可复用的业务监控类数据产品层级结构设计

BI产品模板化是Kimball大神针对DW/BI项目前端应用提出的一种顶层设计模式(),但在实际工作中,无论是产品经理的经验欠缺还是技术人员归纳意识不够,我们很难看到那种让人耳目一新的产品设计出现。在本文笔者希望从一个顶层视角来审视关于如何优雅的实现业务监控类产品设计方案,主要包括前端布局设计、接口设计和底层数据结构设计三个方面,目标站在业务视角来设计数据应用产品。

2024-04-07 16:09:24 288

原创 机器学习效果评估

机器学习,作为人工智能领域的一个重要分支,近年来已经得到了广泛的应用和深入的研究。然而,如何准确、全面地评估机器学习模型的效果,始终是一个关键问题。机器学习效果评估不仅有助于我们了解模型的性能,还可以指导我们如何优化模型,提高预测准确率。

2024-04-07 12:52:37 265

原创 机器学习之拟合问题

机器学习是人工智能领域的一个重要分支,它通过使用算法和统计模型来使计算机系统能够自动地从数据中学习和改进,而无需进行明确的编程。在机器学习的过程中,算法通过对大量数据进行训练,从而找到数据中的模式和规律,并据此对新的数据进行预测或分类。然而,在实际应用中,我们常常会遇到两种主要的问题:过拟合和欠拟合。

2024-04-07 12:34:21 286

原创 机器学习之机器学习算法分类

监督学习是机器学习中最常见的学习方式之一。在监督学习中,训练数据集包含输入(特征列)和对应的输出(目标列)。模型通过训练这些数据来学习如何从输入预测输出。监督学习的目标是找到一种映射关系,使得模型对于新的、未见过的输入也能给出准确的预测。:用于预测连续型数值输出。:虽然名字中有“回归”,但实际上用于分类问题,特别是二分类问题。:用于分类和回归问题,通过寻找一个超平面来最大化不同类别之间的间隔。:通过树状结构进行决策,可以用于分类和回归。:由多个决策树组成,通过集成学习提高预测性能。

2024-04-07 12:05:00 376

原创 机器学习之机器学习算法开发流程

在整个机器学习算法开发流程中,需要注重数据的质量、特征的构造和选择、模型的训练和评估等方面,同时还需要关注模型的稳定性和可解释性。数据标准化/归一化:对数据进行标准化或归一化处理,消除不同特征之间的量纲差异,提高模型的训练效果。定义数据结构:根据业务需求和数据特性,定义合适的数据结构,包括特征的选择、表示和转换。参数调优:通过交叉验证、网格搜索等方法,对模型的参数进行调优,以找到最优的模型配置。特征工程是机器学习中的关键步骤,通过构造、选择和转换特征,可以提高模型的性能。

2024-04-07 11:53:17 239

原创 Spark核心算子

通过外壳命令(例如Perl或bash脚本)通过管道传递RDD的每个分区。将RDD元素写入进程的stdin,并将输出到其stdout的行作为字符串的RDD返回。返回带有数据集num个元素的随机样本的数组,带有或不带有替换,可以选择预先指定一个随机数生成器种子。

2024-04-06 20:58:20 780

原创 Redis分布式锁的设计与实现

分布式锁是一种在分布式系统中实现同步机制的关键技术。在传统的单体应用中,我们依赖锁来控制对共享资源的访问,确保同一时间只有一个线程能够执行特定的代码段或访问某个资源。然而,当系统扩展为分布式环境,即多个进程或节点分布在不同的系统或机器上时,问题变得更为复杂。这时,我们需要一种机制来协调这些分布在不同地方的进程或节点,确保它们对共享资源的访问仍然是同步和有序的。分布式锁应运而生,它允许多个进程或节点在访问共享资源时进行同步。

2024-04-06 03:50:07 607

原创 Kimball维度模型之父子事实表设计

父子事实表设计是维度模型中处理具有父子层次结构数据的一种有效方法。通过合理地设计父子事实表,我们可以更好地组织和表示这些数据,提高查询性能,并支持复杂的数据分析需求。在上面的示例中,我们展示了如何使用父子事实表来设计订单与订单明细的数据模型,并提供了原始表结构和数仓产出模型结构的详细信息。

2024-04-05 21:02:27 1081

原创 Kimball维度模型之数据仓库迭代SOP

数据仓库的建设是一个持续进行的过程。除了初始的从零到一的建设阶段,后续的迭代过程同样至关重要。在某种程度上,后续的数据仓库迭代可能比初始的建设阶段更为重要。许多优秀的数据仓库项目由于未能进行规范的设计而最终失败。

2024-04-05 20:02:19 789

原创 实时数仓之基于Update机制的长周期指标宽表最佳实践

这是笔者在20年初做实时数仓时面对实时指标宽表加工的一种落地运行过的实现方案。回头想想当时的解决方案也有很多值得借鉴的点,所以今天把这套方案过程记录下来。当时的情况是在19年下半年笔者已经着手重建了离线数仓,而且已经稳定运行,从离线数仓的使用效果回收来看,离线数仓确实得到了业务的认可。那么基于这一点,数据组想基于已有模式对业务支撑做进一步升级,从而应运而生要做离线数仓的实时数仓场景,而本文所要论述的就是在建设实时数仓时遇到的一个通用粒度指标宽表加工的一种实现方案。

2024-04-04 00:34:39 855

原创 SQL原理之Join算法详解(含伪代码算法示例)

在实际应用中,Sort Merge Join算法适用于连接的两个表都比较大且已经按照连接键有序排列的情况,因为它可以在一次遍历的过程中完成连接操作,效率相对较高。Sort Merge Join算法的时间复杂度取决于排序操作和合并操作的复杂度,通常为O(n log n),其中n为连接的两个表的总行数之和。Hash Join算法的时间复杂度通常为O(n),其中n为参与连接的两个表的总行数之和,因为构建哈希表和进行哈希连接的过程都是线性的。对于左表的每一行,在右表中进行遍历,找到满足连接条件的行。

2024-04-03 01:39:16 1201

原创 基于Redis Sorted Set对离散数据集合进行重编码设计(含代码)

在实际数据仓库开发过程中,有很多复杂的ETL场景要处理,其中对某个数据仓库属性值进行紧凑级编码就是其中一个场景,比如将离散的user_id字段重编码为从1开始的数字序列,或者是将某个字符串属性重新编码成从1开始的数字序列。这种场景在进行bitmap数据类型设计中显得尤其重要。

2024-04-02 00:57:02 602

原创 Oracle数据库体系结构

Oracle数据库是一个复杂而强大的关系数据库管理系统,它采用了先进的体系结构来确保数据的完整性、安全性和高效性。Oracle的体系结构包含了多个组件和层次,每个部分都扮演着特定的角色,共同协作以实现数据库的高效运行。下面我们将详细介绍Oracle的体系结构。

2024-04-02 00:25:24 400

原创 Oracle rac下asm管理的表空间-数据文件的重命名

需求:公司rac数据库asm存储原本采用normal模式,现在给数据库做了备份策略,不想在使用normal模式的asm管理,这样日常管理太浪费时间,为了平滑迁移,我新添加了一个磁盘组oradata,把日后增加的数据文件首先添加到oradata磁盘组下,然后没有业务发生时再去迁移原始数据。asm下表空间的重命名与普通文件系统下的表空间重命名原理是一样的,只不过asm管理的数据文件有一些需要注意的地方,另外在asm下操作数据文件需要格外小心,稍有不慎将会造成数据文件丢失,如可以做备份最好需要备份。

2024-04-02 00:23:59 415

原创 Oracle分区表

目录一、Oracle分区理论知识二、分区表的实现方式1、范围分区(range partition table)2、列表分区(list partitioning)3、散列分区(hash partitioning)4、间隔分区(interval partitioning)5、引用分区(reference partitioning)6、组合分区(composite partitioning)7、行移动(row movement)三、普通表转换为分区表方法1、导入、导出(Export/import method)方

2024-04-01 04:52:14 1045

原创 Oracle extent、segment、datafile、tablespace及存储关系

6)dba_segments及dba_extents存储至高水位线空间大小,delete删除数据并不会降低高水位线值。7)可以通过dba_segments视图查看table及index等数据库对象占用存储空间大小,此时值为起点至高水位线值大小。1)表空间数据文件未设置自动增长,则数据文件最大值(maxbytes)为0,此时数据文件最大值为bytes值大小。2)tab1表在dba_extents中分成多个区,总共占10m存储空间。4、查看dba_extents及dba_segments数据相关操作。

2024-04-01 04:48:26 745

原创 使用OMF管理oracle数据库

控制文件由参数db_create_online_log_dest_n决定,默认使用几个路径就默认创建几个控制文件,同时如果要使用OMF管理控制文件,需要将参数confile_files reset掉才行。ls: /u01/oracle/oradata/orcl/ORCL/datafile/o1_mf_test1_bjsbyl66_.dbf: 没有那个文件或目录。由参数db_create_file_dest决定,该参数将指定一个路径,该路径为存放OMF数据文件位置。

2024-04-01 04:45:23 465

原创 Oracle密码文件

通过以上查询可以知道,sys用户登录方式既可以通过as sysdba登录schema显示‘SYS’,也可以通过as sysoper登录schema显示‘PUBLIC’。->可以有多少个sysdba和sysoper用户可以放到密码文件里边去(采用二进制方式,即输入1表示最少存放4个,去除重复的)4、sysdba、sysoper区别在哪,普通用户如何使用密码文件已sysdba或sysoper登录。dba用户:具备sysdba和sysoper权限的用户,即oracle的sys和system用户。

2024-04-01 04:44:20 809

原创 Oracle联机日志文件管理

重做日志组内的每一个联机日志文件称为一个成员, 一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同,每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组, LSN号用于唯一区分每一个联机日志组和归档日志, 处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中。日志文件采用按顺序循环写的方式, 当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入, 写入下一组的过程称为日志切换。

2024-04-01 04:42:53 837

原创 Oracle控制文件管理

控制文件的位置和个数记录在参数文件中,通常控制文件采用多路复用的方式来存放管理,一个数据库中最多有8个控制文件,超过了不行,至少不行,默认创建数据库有3个控制文件。控制文件为二进制文件,一般不超过100m,数据库启动到mount阶段时读取控制文件内容,以后一直在用。控制文件记录了数据库名字,标示符,创建时间戳,表空间名字,日志文件名字,SCN号,归档备份信息、字符集等。记录了数据库的结构和行为,有多少个数据文件,日志文件及其位置名称,状态,维护数据库的一致性,即记录了数据库的启动SCN号和终止SCN号。

2024-04-01 04:40:57 743

原创 Oracle分区默认segment大小变化(64k—>8M)

从11.2.0.2开始创建分区表,每个分区默认大小为8M,是由_partition_large_extents参数控制,可以算是11.2.0.2开始的一个新特性,为了减少extent数量,提高分区表性能,而。的一个参数,默认为true,即分区表的每个extent为8M,这里对于_partition_large_extents为true和false的情况进行了测试。为true时,创建分区索引时,默认分区大小为8m,而创建普通索引默认大小为64k。从例1可以得出结论,在11.2.0.4版本中,当参数。

2024-04-01 04:39:07 831

原创 Clickhouse为什么如此快?

此外,向量化执行还使得数据在内存中的布局更加紧凑,减少了缓存未命中的概率,进一步提升了性能。与传统的行式存储不同,列式存储将同一列的数据存储在一起,这种设计使得数据读取和查询更加高效。在查询过程中,系统只需扫描查询涉及的列,而无需读取整行数据,从而大大减少了I/O操作,提高了查询速度。ClickHouse内置了强大的查询优化器,能够自动对查询进行优化,选择最优的执行计划。通过选择合适的压缩和编码策略,ClickHouse能够在保证数据准确性的同时,减少数据的存储空间和I/O操作,从而加速查询过程。

2024-04-01 04:33:39 504

原创 Oracle内存模型:SGA与PGA详解

Oracle的内存模型是一个复杂而高效的系统,它通过SGA和PGA等组件实现了高效的数据处理和查询性能。了解这些组件的工作原理和配置方法对于优化Oracle数据库性能至关重要。在实际应用中,需要根据数据库的负载特性和性能需求来合理调整SGA和PGA的大小和配置,以确保数据库的稳定运行和高效性能。

2024-04-01 03:55:36 880

原创 三阶段提交协议原理及与两阶段提交协议对比

三阶段提交协议通过引入预提交阶段和全局提交/中止阶段,提高了分布式系统事务处理的可靠性和一致性。然而,这种协议也带来了额外的开销和复杂性,特别是在网络延迟或节点故障的情况下,可能会导致系统性能下降或事务处理时间延长。因此,在选择是否使用三阶段提交协议时,需要根据具体的应用场景和需求进行权衡。尽管如此,三阶段提交协议仍然是分布式系统中保证数据一致性的重要工具之一。

2024-04-01 03:43:36 602

原创 Flink实现两阶段提交协议原理介绍

通过 Checkpoint 机制和两阶段提交,Flink 实现了 Exactly-Once 语义,保证了作业的状态一致性。这种机制不仅可以处理单个节点的故障,还可以应对整个作业的故障,从而确保数据处理的正确性和可靠性。

2024-04-01 03:21:17 485

原创 两阶段提交原理介绍

两阶段提交协议是一种用于保证分布式系统中数据一致性的重要机制。它通过引入协调者和两阶段的提交过程,确保了在所有参与者中都一致地完成提交或回滚。然而,它也存在一些明显的缺点,如阻塞问题、单点故障问题和通信开销等。因此,在实际应用中,需要根据具体的需求和场景来选择是否使用两阶段提交协议,或者考虑使用其他更复杂的分布式一致性协议。

2024-04-01 03:13:22 266

原创 LSM存储引擎原理介绍

LSM(Log-Structured Merge-Tree)是一种用于实现高性能、高吞吐量的存储引擎的数据结构。它在诸如数据库系统和分布式文件系统等领域广泛应用。LSM Tree 的设计旨在优化写入性能,同时保持较高的读取性能。LSM树由Google的Patrick O'Neil和Dennis Shasha在1996年首次提出,被广泛用于许多大规模数据存储系统,如Bigtable、HBase和LevelDB等。

2024-04-01 02:08:56 632

原创 Oracle逻辑备份 导入、导出、数据泵

有时,初次expdp、impdp任务交互界面被关闭,而此时我们还需要监控导出、导入进度信息,可以进入directory对象物理目录,通过shell命令tail -f查看恢复进度。degree字段:表示运行job任务设置的并行度(parallel参数指定的值),默认情况下,仅开启一个工作进程导入、导出数据,可以在启动导入导出任务时通过parallel参数指定并行度,也可以在运行过程中进入交互式界面,通过交互式界面下parallel参数动态调整并行度。到这里,我们已经准备好了进行逻辑备份可用的目录对象了。

2024-04-01 01:17:41 807

原创 实时数仓之基于Reids实时指标UV实现(含代码)

在笔者进行基于Redis UV场景示例的UDAF函数开发时,发现继承AggregateFunction后无法通过函数上下文获取到对应的分组key数据,如果上下文获取不到分组key数据,那么对于拼接redis key就会造成挑战,从上述三个UDAF函数可以看出,笔者通过在函数传参时传入分组key来解决这个问题!不知道是否姿势不对,如果有读者了解这块,可以留言沟通。笔者测试过程中的Redis key前缀为,即前缀uv:任务名:分组字段拼接字符串:分组字段拼接值,如下:前缀uv:这里是任务名:这里是。

2024-04-01 00:00:10 877

原创 Kimball维度模型之迟到的事实

在数据仓库建设的过程中,面对不断涌现的数据和信息,处理“迟到的事实”是一个至关重要的挑战。所谓“迟到的事实”,指的是在数据仓库已经建立并开始运行后,新增的数据或信息却具有之前时间戳的情况。这可能由于数据采集的延迟(比如埋点端补数据)、数据处理流程中的错误、数据源的后续更新等原因导致。如何有效地处理这些“迟到的事实”,成为了数据仓库管理者需要解决的重要问题。

2024-03-31 02:19:12 354

原创 SQL面试题(1)连续登陆问题

连续登陆无疑是数据开发面试高频面试题,但遇到本人面试可能并不会出现这个面试题,一般我会根据实际开发场景出具SQL场景题目,且会设计成从浅入深考察应聘者的SQL开发能力,优秀的同学最终会根据场景题延伸到SQL执行计划理解层面,基本上能过上述一关的可以判断为开发能力优秀,工作中无需过多关心代码质量问题。连续登录是其中的一个关键指标,它可以帮助我们识别出那些经常访问系统的忠实用户。在这个场景中,我们想要找出在特定时间段内连续登录了至少N天的用户,并统计他们的连续登录天数。的表,该表记录了用户的登录历史。

2024-03-31 01:26:13 623

原创 Spark数据倾斜解决方案

​ 数据倾斜场景千千万,这里列举常见的一些数据倾斜场景进行简单的描述,更多示例,后续更新。

2024-03-31 00:46:50 1453

原创 编译原理知识点整理

编译的本质是翻译(将源语言翻译成目标语言)将汇编语言翻译成机器语言的过程称为汇编将高级语言翻译成汇编语言或者机器语言的过程称为编译编译器直接将源程序翻译成目标程序进行执行解释器直接读取源程序逐行执行词法分析(lexical analysis/scanning)从左到右逐行扫描源程序的字符,识别出各个词素(lexeme)序列(即单词),确定单词的类型,将识别出的单词转化为机内表示形式-词法单元(token)的形式token的组成结构:token<种别码,属性值>单词类型种别种别码关键词。

2024-03-29 03:04:15 669

原创 基于Mac M1[ARM64]环境下Docker部署大数据集群

注意:打开新环境需要手动同步环境变量。

2024-03-28 05:43:57 1205

原创 实时数仓之实时数仓架构(Hudi)

Flink和Hudi组合实现湖仓一体架构,目前也是业界讨论比较多的一套架构方案,这也得益于Flink和Hudi社区的快速发展,对于组件的特性支持越来越丰富。历史实时数据对齐:如果底层面向业务过程设计,那么根据合理的时间戳属性,是可以严格区分历史数据和实时数据区别的,这种情况可以考虑通过离线数据补全缺失数据。事实表按照业务过程建设,一般业务过程数据不存在更新所以单个key也不存在重复发射的情况,即使存在数据重发,也可以通过ETL规则提前规避掉,这种思路对于下游数据任务加工都比较友好。

2024-03-27 02:59:51 802

原创 实时数仓之Flink基于Hudi维表Join缺陷解析及解决方案

在生产上遇到这种SQL 维表Join场景问题,可以采用方案一进行处理,如果团队技术比较强大,那么可以考虑方案二落地,方案三非技术大牛坐镇,不建议改造。这里对方案二三不做详细介绍,待后续更新,敬请关注。

2024-03-27 01:56:31 1158

实时数仓模拟流式数据源代码

这个项目用来进行实时数据学习使用,其可以自动生成《网上书店》交易数据流,其中包括: 交易用户数据、 网上书店数据、 交易图书数据、 订单数据 通过不同的配置可以自动生成顺序的交易数据流,也可以生成乱序的交易数据流。

2024-03-15

数据仓库ETL工具箱

中文译本,高清版本,详细讲解维度模型设计与实现方案,缓慢变化维实现技术。

2018-09-27

大数据之路:阿里巴巴大数据实践

高清带目录资源,阿里巴巴大数据之路,阿里巴巴大数据实现产品解决方案。

2018-09-27

大数据安装文档

话费大量时间将hadoop、hive、hbase、spark、phoenix、sqoop、mysql主从复制等环境部署手册。

2018-04-08

unixODBC-devel-2.2.11-7.1.i386

unixODBC-devel-2.2.11-7.1.i386

2014-08-23

sysstat-7.0.2-3.el5.i386

linux系统包,用于oracle 11g数据库linux版安装系统工具包

2014-08-23

p8670579_112010_LINUX

linux安装oracl11g数据库错误补丁包[INS-20802] Oracle Net Configuration Assistant failed

2014-08-23

空空如也

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

TA关注的人

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