自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

道可道非常道

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

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

原创 数据专题导航

目录一 维度模型系列二 FLink(1.16.0)源码系列Kimball维度模型之构建数据仓库先决条件-CSDN博客Kimball维度模型之数据仓库分层架构_kimball 企业级数仓架构-CSDN博客Kimball维度模型之构建数据仓库流程解析-CSDN博客Kimball维度模型之数据仓库迭代SOP-CSDN博客Kimball维度模型之数据仓库模型治理-CSDN博客Kimball维度模型之数据质量治理体系建设-CSDN博客Kimball维度模型之业务过程-CSDN博客Kimball维度模型之事务事实表-C

2024-04-29 18:54:50 364 5

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

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

2024-03-09 02:42:50 1103

原创 Hive/SparkSQL自定义变量使用方法介绍

一 创建测试表。

2024-09-11 11:32:49 257

原创 Vue使用Codemirror和diff-match-patch实现CodeCompare功能

一 依赖环境。

2024-08-22 19:12:26 259 1

原创 设计模式之原型模式

原型设计模式(Prototype Design Pattern)是一种创建型设计模式,其核心思想是通过复制(克隆)现有对象来创建新对象,而不是通过传统的实例化方式。这个模式在系统中需要创建大量相似对象时非常有用,可以避免反复创建同一类对象,并且在某些情况下还能提高性能。在原型模式中,对象实现一个原型接口,该接口规定了一个clone方法,用于返回对象自身的副本。这样,客户端就可以通过克隆的方式来创建对象,而不需要直接依赖具体类的构造函数。Prototype(原型接口):定义一个用于克隆自身的接口。

2024-08-08 21:02:35 620

原创 设计模式之外观模式

外观设计模式通过提供一个高层接口,简化了复杂系统的使用,使得客户端代码更加简洁和易于维护。它隐藏了系统的复杂性,减少了子系统之间的耦合,并且可以通过引入新的外观类来适应系统的变化。外观模式在大型系统、编译器、多媒体处理和数据库操作等场景中非常有用。通过理解和应用外观模式,可以有效地提高软件系统的设计质量和可维护性。

2024-08-07 18:32:35 516

原创 Maven批量修改Java项目版本号

【代码】Maven批量修改Java项目版本号。

2024-08-05 17:07:07 250

原创 Paimon正常任务报错FileNotFoundException

调整快照过期时间后问题没有出现。

2024-08-02 13:43:55 780

原创 设计模式之责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,旨在将请求的发送者和接收者解耦,从而实现请求的动态处理。该模式将多个处理者(Handler)链接成一条链,并将请求沿着链传递,直到有一个处理者能够处理该请求为止。这样,每个处理者只需关注自己能处理的请求,而不必关心整个处理链的其他部分。适用场景当有多个对象可以处理一个请求,但并不确定哪个对象会处理该请求时。当希望在运行时动态地指定处理请求的对象时。

2024-08-01 19:07:55 252

原创 Java使用Process和ProcessBuilder调用外部任务

Process类是 Java 中用于表示和管理已经启动的操作系统进程的工具。通过Process对象,开发者可以与子进程进行交互,例如获取进程的输入、输出和错误流,发送输入数据,读取输出结果,监视进程的状态,等待进程结束以及获取退出码。它提供了方法来终止进程、检查进程是否仍在运行以及获取进程的执行结果。Process类在创建和管理系统进程时非常有用,特别是在需要与外部程序进行通信的应用场景中。常见的方法包括waitFor()和destroy()。类是 Java 中用于创建和管理操作系统进程的工具。

2024-07-22 19:25:43 995

原创 设计模式之命令模式

命令模式通过将请求封装为对象来解耦请求的发送者和执行者,使代码更灵活、更具扩展性。它在需要对操作进行记录、撤销、重做以及支持事务操作时特别有用。然而,命令模式也会增加系统中类的数量,并且每一个具体的命令类都会导致代码的膨胀,因此在使用时需要权衡。

2024-07-20 21:13:48 578

原创 设计模式之工厂模式

工厂设计模式(Factory Pattern)是一种创建型设计模式,它帮助我们在不明确具体类的情况下创建对象。这个模式的主要动机是将对象的创建过程与其表示相分离,目的是使系统更具灵活性和可扩展性。在面向对象编程中,我们经常需要创建对象,这些对象可能来自不同的类,并且每个类的实例化过程可能会很复杂。如果我们在代码中直接使用这些类来创建对象,代码会变得难以维护和扩展。为了克服这些问题,工厂设计模式提供了一种解决方案,通过定义一个创建对象的接口,让子类决定实例化哪一个类,从而把对象的创建与使用分离开来。

2024-07-20 21:10:33 1045

原创 设计模式之单例模式

单例模式是一种创建型设计模式,确保一个类在应用程序的生命周期中仅有一个实例,并提供一个全局访问点。它通过私有构造函数、防止直接实例化,静态方法获取唯一实例,保证全局唯一性。单例模式常用于配置管理、日志记录、数据库连接池、线程池等需要共享资源的场景,具有减少资源浪费、确保状态一致性、简化全局访问等优点。特别是在多线程环境中,通过适当的同步机制,单例模式可以确保线程安全,避免实例重复创建的问题。

2024-07-20 21:08:14 505

原创 设计模式之策略模式

​// 私有构造函数防止外部实例化​​@Override​@Override​@Override​​​​​​通过策略模式,我们可以很容易实现登录用户本地缓存功能,同时如果我们想扩展缓存策略,也可以定义Redis缓存策略,只需要通过配置变更就可以让程序运行依赖新的缓存策略。策略模式通过将算法封装在独立的策略类中,使得算法的切换和扩展变得更加容易,符合面向对象设计的开闭原则。

2024-07-20 21:05:01 621

原创 vue+element-ui容器布局

外层容器。当子元素中包含或时,全部子元素会垂直上下排列,否则会水平左右排列。:顶栏容器。:侧边栏容器。:主要区域容器。:底栏容器。以上组件采用了 flex 布局,使用前请确定目标浏览器是否兼容。此外,的子元素只能是后四者,后四者的父元素也只能是。

2024-05-26 03:38:10 460

原创 利用Spring Initializr初始化Springboot项目

​ Idea企业版本到期了,最近想设计一个数据开发平台,需要创建SpringBoot项目,本文算是个流水账,记录通过官网。创建Springboot项目的过程。

2024-05-14 12:35:43 243

原创 Flink基于开源类库实现FlinkSQL自定义UDAF类型推断异常解决

​ 根据报错信息我们可以发现,这里因为在UDAF中引入了开源类库RoaringBitmap导致FlinkSQL UDAF编译类型推断报错,比如。​ 那么解决方案很简单,FlinkSQL UDF要求数据类型必须与预定义的类型一致,那么我们通过注解。​ 只需要加一个注解就可以解决问题。可以很清晰的说明是由于引用了。

2024-05-07 23:40:44 404

原创 FlinkSQL基于RoaringBitmap的UDAF实现UV指标

​ RoaringBitmap 是一种压缩的位图数据结构,用于存储大量稀疏或密集的整数集合。它结合了位图的优点(如快速查询和更新)和压缩技术的优势(如空间效率),能够在保持高效性能的同时,减少内存占用。​ 在 Flink 中,UDAF 通常需要实现几个接口,如getValue()等。/*** 创建基于RoaringBitmap的累加器* @returnreturn acc;} /*** 向累加器添加元素} /*** 撤回元素} /*** 合并多个累加器} } /**

2024-05-07 23:25:06 823

原创 FlinkSQL优化器查询重写技术引发UDF翻倍调用问题分析及解决方案

​ Flink SQL无疑是实时数仓领域一个最耀眼的明星,他对于统一流批一体的设计可谓是居功至伟。鉴于Flink SQL在实时数仓领域的卓越表现,我们很有必要对Flink SQL在ETL场景下的表现要有深刻的理解。本文聚焦于Flink SQL UDF使用场景下由于SQL重写导致UDF翻倍调用的原理分析及对应的应对策略。

2024-05-05 23:04:49 988

原创 实时数仓之Flink实现版本维表数据的Redis全局缓存

在维度模型中,数据通常被划分为维度和事实两大阵营,而维度通常是渐变(Kimball维度模型领域通常称呼这种维度为缓慢变化维度或者又被称为渐变维度)的,这种场景下,要求我们在维表建模过程中,要更多的考虑维度版本的变化,保存维度变化的维表模型可以方便在ETL和应用过程中可以让事实数据匹配自己对应的维度信息,这种场景在实时数仓构建过程中是比较常见的。通常在维度建模过程中,针对渐变维表建模的方式主要有以下几种方案:Kimball渐变维表类型2(可以认为是方案)技术方案。

2024-05-04 23:11:47 989 1

原创 Flink源码分析(13)Flink SQL客户端启动过程源码分析

​ Flink SQL Client启动是通过sql-client.sh脚本入口进行启动,因此本文的源码入口从sql-client.sh脚本开始。sql-client.sh跟踪sql-client.sh脚本发现该脚本实际调用了进行环境的初始化操作。下面让我们从方法入手分析​ 这里的DEFAULT_TERMINAL_FACTORY指的是jLine客户端继续下面追踪追踪源码发现最后都会进入执行追踪发现调用了这里的parser对象是SqlMultiLineParser的实例这里的par

2024-04-29 18:30:42 335 2

原创 Flink源码分析(12)Flink SQL执行流程源码分析

​ Flink SQL模块的真正目的是将用户提交的SQL语句转换成Flink DataStream的形式,最后提交生成的DataStream算子到执行引擎去执行的过程。,由于executeSql()方法在内部的调用逻辑上可以覆盖sqlQuery(sql)方法,最终会汇总到同一条执行路径,因此关于Flink SQL执行流程源码分析从。调用Calcite的SQL解析模块对SQL语句执行解析,返回SqlNode对象即Calcite的SQL语法树对象。在这里完成了SQL的第二步工作,SQL校验的完成,接着调用。

2024-04-29 14:36:23 947 2

原创 Flink源码分析(11)Flink SQL执行环境初始化源码分析

​ 上述为Flink SQL执行环境初始化相关的内容,首先了解上述源码流程对于后边理解Flink SQL的执行流程会有很大的帮助。然后创建了StreamTableEnvironment。首先来追踪planner创建过程都做了哪些操作。创建了SQL planner;​ 因此这里入口代码选择从。

2024-04-29 01:39:44 244 3

原创 Flink源码分析(10)Flink Checkpoint源码分析

​ 以上内容就是Flink Checkpoint源码调用流程,理解Checkpoint原理对于理解Flink应用具有较大的帮助,以上内容由本人追踪源码理解,有误欢迎指正。对于某个checkpoint,当接收到所有operator的确认消息之时,发送消息通知各个operator,checkpoint已完成。**triggerCheckpoint()**是一个重要的节点方法,通过调用。从这里开始,与从构建Dispatcher调用链结合到一起了,即代码。保存已完成和正在进行中的checkpoint的相关信息。

2024-04-28 23:23:16 705

原创 Flink源码分析(6)TaskManager启动源码分析

从堆栈追踪可以发现,Flink Per-job下的TaskManager的任务类也回到了TaskManagerRunner,与Standalne一致。可以发现,在这里创建了TaskManagerRunner,并且启动TaskManagerRunner。方法触发,通过追踪发现TaskManager的启动类为。4.2 首先创建了TaskExecutor,继续追踪。这里的堆栈调用链路比较长,但总体思想就是想RM注册。方法继续分析TaskManager的启动源码。这里启动了taskSlotTable,同时在。

2024-04-28 03:22:57 1226

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

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

2024-04-26 00:53:15 900 1

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

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

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

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

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

2024-04-11 18:23:36 1165

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

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

2024-04-07 16:09:24 339

原创 机器学习效果评估

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

2024-04-07 12:52:37 331

原创 机器学习之拟合问题

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

2024-04-07 12:34:21 356

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

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

2024-04-07 12:05:00 440

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

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

2024-04-07 11:53:17 427

原创 Spark核心算子

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

2024-04-06 20:58:20 818

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

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

2024-04-06 03:50:07 646

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

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

2024-04-05 21:02:27 1233

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

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

2024-04-05 20:02:19 917

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

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

2024-04-04 00:34:39 991

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

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

2024-04-03 01:39:16 1353

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

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

2024-04-02 00:57:02 638

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

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

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关注的人

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