自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JH_Zhai的博客

破帽遮颜过闹市,漏船载酒泛中流。

  • 博客(150)
  • 收藏
  • 关注

原创 什么是数据编织

What Is Data Fabric?Data fabric is a unified data architecture that connects disparate data sources, simplifying access and management while ensuring consistency and security across the entire data landscape.The data fabric architecture style has three cor

2024-10-08 20:01:33 886

原创 Java中类的初始化和实例化区别

是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。初始化只在类加载的时候执行一次。

2024-08-26 14:10:19 360

原创 Spring 解决bean的循环依赖

重新考虑系统的架构,采用合适的设计模式、解耦方式和依赖注入机制,可以帮助解决或避免循环依赖带来的问题。其实,Spring容器中单例(singleton)的场景是支持循环依赖的,Spring使用了三级缓存和提前曝光(early exposure)的机制来处理循环依赖问题。死锁和无限递归:当循环依赖中的对象在创建过程中相互等待对方完成创建时,可能会导致死锁或无限递归的情况发生。在一个循环依赖链中,修改一个类可能会影响到其他所有相关的类,增加了代码的脆弱性。这可能导致错误的结果或意外的行为。

2024-08-17 00:11:56 541

原创 使用Spring来管理bean的优点

使用Spring来管理Bean可以提供依赖注入、松耦合、生命周期管理和AOP支持等优势,减少了开发人员的工作量,提高了代码的可维护性和可测试性。相比之下,自己手动管理Bean存在代码冗余、耦合性高、难以管理复杂依赖关系以及缺乏一致性和灵活性等缺点。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/qq_46130027/article/details/131602559。

2024-08-16 23:14:48 323

原创 什么是Bean

在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是由Spring IoC。Bean 是 Spring 框架中最核心的两个概念之一(另一个是面向切面编程 AOP)容器实例化、组装和管理的对象。

2024-08-16 23:12:08 343

原创 过滤器和拦截器

拦截器可以获取ioc中的service bean实现业务逻辑,拦截器可以获取ioc中的service bean实现业务逻辑,拦截器可以获取ioc中的service bean实现业务逻辑,⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。①拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2024-08-14 21:54:20 391

原创 【转载】系统负载

负载是服务器运行是否正常的一个风向标,当服务器软件异常时,大部分都会排查线上服务器的负载状况。那么到底什么是负载呢?在Linux内核调度中,负载的评估指标不是CPU使用率,而是进程处于runnable的平均时间。Linux内核调度包含调度实体负载、CPU负载和系统负载等3个级别的负载计算方式的。其中CPU负载是用来体现当前CPU的工作任务loading情况,和CPU繁忙程度的,其主要通过统计CPU rq上task处于runnable的平均时间。而我们在服务治理中经常提到的负载实际指的是系统负载。

2024-05-25 18:37:38 566

原创 RuntimeException 和 Exception区别 (比如事务管理中)

在 Spring 框架中,RuntimeException 和 Exception 的区别主要体现在异常处理和事务管理的方面。

2024-05-22 12:14:04 513

原创 logback 配置

【代码】logback 配置。

2024-05-18 21:14:38 248

原创 【产品调研】现代数据栈产品

百科 https://baike.baidu.com/item/DENODO%20SL/63615915?官网 https://www.denodo.com.cn/

2024-04-06 23:42:25 314

原创 【阅读笔记】京东数坊

http://5th.tma999.com/uploads/soft/180923/1-1P923153J3.pdf

2024-04-06 22:32:27 182

原创 【阅读笔记】指标平台加速零售数字化转型--Kyligence Zen 智能一站式指标平台

https://mp.weixin.qq.com/s/doA0q-2hmqhDBpFEQtHWNQ

2024-04-06 22:28:18 115

原创 【名词概念】Headless BI

在理解Headless BI之前,我们需要先理解一下什么叫做Headless?Headless的概念最初的来源与内容管理平台有关,一般是指内容管理平台中的一些应用不提供可视化界面,只是通过API方式把内容以数据的方式给前端。从这里,可以理解Headless实际上是把GUI部分跟数据部分进行了分离,这实际上比较符合现在技术的一种发展趋势,尤其是数据要去在不同的环境中去显示的时候。实际上就是把BI的数据指标层和展示层做了分离,把BI提供数据的部分以数据服务的方式提供服务,与可视化部分进行分离。

2024-04-06 22:06:56 446

原创 Apache Hudi Compaction

https://medium.com/@simpsons/apache-hudi-compaction-6e6383790234While serving the read query(snapshot read), for each file group, records in base file and all its constituent log files are merged together and served. And hence the read latency for MOR snap

2024-04-03 15:30:31 227

原创 第三代指标平台

传统的第一代指标平台注重指标口径登记与管理、而第二代依赖 ETL 开发。Aloudata CAN 作为第三代指标平台,采用了基于明细语义数据模型定义指标的方式,提供了“语义化”和“自动化”两大核心能力,从根本上解决了传统指标平台的局限性。

2024-02-29 10:05:23 369

原创 【Hudi】核心概念

大数据新风口:Hudi数据湖(尚硅谷&Apache Hudi联合出品)

2024-02-27 22:09:18 438

原创 【Hudi】调优指南

1 并行度2 Off-heap (堆外)内存3 Spark内存4 调整文件大小5 时间序列/日志数据6 GC调优7 OutOfMemory

2024-02-27 19:42:38 244

原创 【Hudi】并发控制

Hudi的表操作,如压缩、清理、提交,hudi会利用多版本并发控制来提供多个表操作写入和查询之间的快照隔离。使用MVCC这种模型,Hudi支持并发任意数量的操作作业,并保证不会发生任何冲突。Hudi默认这种模型。

2024-02-27 19:36:39 533

原创 【Hudi】MOR建表会额外生成rt和ro后缀两张表

当hudi表按照MOR格式新建以后,会默认生成3个表,如新建 hudi_os_dev表,则会生成。(1)MOR,写入快,适用于源端数据快速接入ODS层,也就是常说的贴源层的场景;(2)COW,读取快,适用于从贴源层取数据,经过处理后在存储至标准层的场景;(1)Merge-On-Read(MOR-读时合并);(2)Copy-On-Write(COW-写时复制);最后,对MOR方式存储时产生的三种格式进行简要总结。首先,Hudi表可以支持多种数据类型,如。

2024-02-27 10:17:31 866

原创 【Hudi】索引

假设在数据分布最糟糕的情况下,需要被更新的 100 条数据分布在 100 个文件中。在有了索引之后,更新的数据可以快速被定位到对应的 File Group,以下面的官方的示意图为例,在传统 Hive 数仓的场景下,如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。索引,其依赖布隆过滤器来判断记录存在与否,当记录存在时,会读取实际文件进行二次判断,以便修正布隆过滤器带来的误差。

2024-02-22 21:02:50 460

原创 【Hudi】Upsert原理

3.数据去重:一批增量数据中可能会有重复的数据,Hudi会根据主键对数据进行去重避免重复数据写入Hudi 表。4.数据fileId位置信息获取:在修改记录中可以根据索引获取当前记录所属文件的fileid,在数据合并时需要知道数据update操作向那个fileId文件写入新的快照文件。8.hive元数据同步:hive 的元素数据同步这个步骤需要配置非必需操作,主要是对于hive 和presto 等查询引擎,需要依赖hive 元数据才能进行查询,所以hive元数据同步就是构造外表提供查询。

2024-02-20 19:23:27 457

原创 【Hudi】设置复合主键

【代码】【Hudi】设置复合主键。

2024-02-18 19:11:34 424

原创 【数据仓库】主题域和数据域

举个更形象点的例子,建设数仓就像饭店做菜一样,数仓在面向业务系统数据根据其特点划分出数据域,如同厨房根据采购的食材特点将它们摆放在不同货架区,如肉禽区、果蔬区、调味区等。而数仓在面向业务分析根据其需求划分出主题域,如同饭店根据不同食客群体的口味需求将食材做成了不同菜系,如江浙菜、鲁菜、川菜等。对于数据仓库的定义是这样的,它是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。

2024-02-18 14:43:55 763

原创 【整理】指标体系

这幅图上面灵活分析场景,下面是周期建模场景,不同场景会配套出不同栈。

2024-02-18 11:25:15 173

原创 【Hudi】小文件问题

https://blog.csdn.net/u013411339/article/details/123287899

2024-02-07 15:49:05 149

原创 【Hudi】参数

官方文档 https://hudi.apache.org/docs/configurations/#FLINK_SQL。

2024-02-07 15:42:59 226

原创 【Hudi】Hoodie是什么?

It was named Hoodie initially and when officially entering apache, it was renamed to Hudi. Both can be used interchangeably. Most code references use Hoodie, but in general for other purposes, we use Hudi.

2024-02-05 15:30:52 121

原创 【Hudi】Copy-on-Write(COW)和Merge-on-Read(MOR)

这个过程对所有的线程都是透明的,也就是说AC两个线程使用的还是原来的内存数据,当线程B将数据更改后,系统将数据指针移向修改后的数据段上,这样在所有线程都不知情的情况下完成了数据的更新操作。每次新数据的写入,都会基于当前的数据文件产生一个带有提交时间戳的新副本文件,新数据会插入到当前的新副本文件中,直到整个操作没有完成前,所有的查询操作都不会看到这个新的文件副本。在新的副本上进行写入操作,这种方式带来的问题就是在每次数据写入时,都需要重写整列数据文件,哪怕只有一个字节的数据写入(也就是所谓的写放大)。

2024-02-05 15:29:21 659

原创 SQL Parser

ChatGPT 生成case。

2024-02-04 18:59:08 496

原创 【Java】JVM垃圾回收

垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的矛盾,C++ 等语言创建对象要不断的去开辟空间,不用的时候又需要不断的去释放控件,既要写构造函数,又要写析构函数,很多时候都在重复的 allocated,然后不停的析构。

2024-01-18 13:26:13 956 1

原创 【协议】时间语法Jakarta Expression Language

Jakarta Expression Language(简称JEXL)是一种简单、动态的表达式语言,用于在Java应用程序中执行动态表达式。它是Apache Jakarta项目的一部分,旨在提供一种灵活、可扩展的表达式解析和求值机制。JEXL在许多Java应用程序中被广泛使用,特别是在需要动态生成和执行表达式的场景中。JEXL提供了一种类似于JavaScript或其他脚本语言的语法,可以在Java应用程序中进行动态表达式的求值。它支持基本的算术运算、逻辑运算、条件判断、循环控制等常见的表达式操作。

2023-12-26 15:38:48 529

原创 【项目管理】

作为一个协助开发团队其他人角色,哪部分有问题直接去问

2023-12-25 11:45:25 426

原创 【Clickhouse】float 计算误差

Float 为二进制 精度有损,每次求和的结果可能一样,由于相加顺序不一样导致。bigDecimal是无损的,底层为十进制,但是存储占用更大。举例:在 ClickHouse 中,运行上述查询,可能会得到一个结果接近于 0.3,但不完全相等的值,例如 0.30000000000000004。这是因为浮点数的二进制表示无法完全精确地表示 0.1 和 0.2。

2023-12-13 10:19:53 1719 1

原创 Clickhouse RoaringBitmap

RoaringBitmap是高效压缩位图,简称RBM官网介绍:Roaring bitmaps are compressed bitmaps. They can be hundreds of times faster.

2023-12-11 16:11:19 1287

原创 Clickhouse Join类型

哈希连接算法速度快,是最通用的算法,支持所有连接类型和严格性设置,但内存哈希表的创建是单线程的,如果右侧表非常大,就会成为瓶颈。Grace哈希连接算法是一种非内存限制版本,它将输入数据分割成多个数据桶,其中一些数据桶先存到到磁盘,然后在内存中按顺序处理。ClickHouse中的Hash Join, Parallel Hash Join, Grace Hash Join。并行哈希连接算法通过同时创建多个哈希表,在右侧表很大的情况下速度更快,但需要更多内存。

2023-11-30 10:08:32 797

原创 8. Spring 表达式语言 (SpEL)

https://itmyhome.com/spring/expressions.html

2023-11-22 14:20:47 98

原创 【Spark】What is the difference between Input and Shuffle Read

保持每个task的 input + shuffle read 量在300-500M左右比较合适。Spark调参过程中。

2023-10-31 16:58:32 1205

原创 【讲座笔记】基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023 | 字节开源

在这里插入图片描述。

2023-10-22 15:03:34 318

原创 资源超分是什么?

经常听到资源超分,但是具体指的什么还不清楚,哪里来的术语。

2023-09-19 14:53:06 1160

原创 【笔记】Spark3 AQE(Adaptive Query Execution)

不同于传统以整个执行计划为粒度进行调度的方式,AQE 会把执行计划基于 shuffle 划分成若干个子计划,每个子计划用一个新的叶子节点包裹起来,从而使得执行计划的调度粒度细化到 stage 级别 (stage 也是基于 shuffle 划分)。我们知道一般的 SQL 执行流程是,逻辑执行计划 -> 物理执行计划,而 AQE 的执行逻辑是,子物理执行计划 -> 父逻辑执行计划 -> 父物理执行计划,这样的执行流程提供了更多优化的空间。比如在对 Join 算子选择执行方式的时候可能有原来的。

2023-08-21 23:23:14 1038 1

空空如也

空空如也

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

TA关注的人

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