自定义博客皮肤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的博客

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

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

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

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

2024-04-06 23:42:25 214

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

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

2024-04-06 22:32:27 105

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

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

2024-04-06 22:28:18 67

原创 【名词概念】Headless BI

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

2024-04-06 22:06:56 234

原创 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 178

原创 第三代指标平台

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

2024-02-29 10:05:23 301

原创 【Hudi】核心概念

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

2024-02-27 22:09:18 404

原创 【Hudi】调优指南

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

2024-02-27 19:42:38 168

原创 【Hudi】并发控制

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

2024-02-27 19:36:39 372

原创 【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 244

原创 【Hudi】索引

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

2024-02-22 21:02:50 420

原创 【Hudi】Upsert原理

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

2024-02-20 19:23:27 298

原创 【Hudi】设置复合主键

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

2024-02-18 19:11:34 183

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

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

2024-02-18 14:43:55 438

原创 【整理】指标体系

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

2024-02-18 11:25:15 144

原创 【Hudi】小文件问题

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

2024-02-07 15:49:05 104

原创 【Hudi】参数

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

2024-02-07 15:42:59 116

原创 【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 81

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

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

2024-02-05 15:29:21 296

原创 SQL Parser

ChatGPT 生成case。

2024-02-04 18:59:08 427

原创 【java】jvm垃圾回收

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

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

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

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

2023-12-26 15:38:48 426

原创 【项目管理】

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

2023-12-25 11:45:25 403

原创 【Clickhouse】float 计算误差

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

2023-12-13 10:19:53 1387

原创 Clickhouse RoaringBitmap

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

2023-12-11 16:11:19 1093

原创 Clickhouse Join

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

2023-11-30 10:08:32 698

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

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

2023-11-22 14:20:47 66

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

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

2023-10-31 16:58:32 1165

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

在这里插入图片描述。

2023-10-22 15:03:34 241

原创 资源超分是什么?

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

2023-09-19 14:53:06 498

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

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

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

原创 【笔记】湖仓一体架构演进与发展

https://www.bilibili.com/video/BV1oF411F7rQ/?spm_id_from=333.788.recommend_more_video.0&vd_source=fa36a95b3c3fa4f32dd400f8cabddeaf

2023-08-05 23:40:21 363

原创 【笔记】第94期-冯永吉-《湖仓集一体关键技术解读》-大数据百家讲坛-厦大数据库实验室主办20221022

https://www.bilibili.com/video/BV1714y1j7AU/?spm_id_from=333.337.search-card.all.click&vd_source=fa36a95b3c3fa4f32dd400f8cabddeaf

2023-08-05 23:12:45 446

原创 【笔记】MYSQL单表数据达2000万性能严重下降,为什么?

那么现在我们需要计算出非叶子节点能存放多少指针,其实这也很好算,我们假设主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,这样一共14字节,我们一个页中能存放多少这样的单元,其实就代表有多少指针,即16384/14=1170。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一个页的大小是16K。

2023-07-30 23:49:36 589

原创 【笔记】Java并发编程--Executors

Executor框架的UML图

2023-07-30 09:36:38 331

原创 【Spring】Springboot过滤器Filter和拦截器Inteceptor详解及使用场景

Springboot过滤器Filter和拦截器Inteceptor详解及使用场景

2023-07-11 22:38:06 413

原创 【Java】Servlet

Servlet是一种Java编程语言的服务器端程序,它可以接收客户端请求并生成响应,通常用于Web应用程序开发。Servlet通常运行在Web服务器中,可以与Web服务器交互以提供动态的Web内容。它是Java Web开发技术中的一个重要组成部分,常用于处理用户请求、访问数据库、生成动态网页等。Servlet是Java EE(Java Enterprise Edition)规范的一部分,可以在任何支持Java EE的Web服务器上运行。

2023-07-11 22:16:41 429

原创 【面试】Hbase

命名空间,类似于概念,每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default, hbase中存放的是HBase内置的表, default表是用户默认使用的命名空间。

2023-07-09 23:18:51 840

原创 【笔记】硬盘

sata是一种较早的协议,最初是为机械硬盘设计的,它使用ahci驱动程序,通过sata总线和物理接口与电脑连接。nvme是一种较新的协议,专门为固态硬盘设计的,它使用nvme驱动程序,通过pcie总线和m.2或u.2等物理接口与电脑连接。nvme协议的固态硬盘的队列管理也比sata协议的固态硬盘更高效。3、优势不同:SATA接口目前的最高速度是每秒传输768MB/s数据,而使用NVMe协议的固态硬盘的传输速度,最高可以实现3000MB/s或以上的读取速度。而nvme协议的固态硬盘可以实现。

2023-07-09 23:00:17 427

原创 【笔记】并发提升 20+ 倍、单节点数万 QPS,Apache Doris 高并发特性解读

OLAP 数据库一般是基于列式存储引擎构建,且是针对大数据场景设计的查询框架,通常以数据吞吐量来衡量系统能力,因此在 Data Serving 高并发点查场景的表现往往不及用户预期。融合统一的分析范式为 Apache Doris 能承载的工作负载带来了挑战,也让我们更加系统化地去思考如何更好地满足用户在此类场景的业务需求。基于以上思考,在即将发布的 2.0 版本中,我们在原有功能基础上引入了一系列面向点查询的优化手段,单节点可达数万 QPS 的超高并发,极大拓宽了适用场景的能力边界。

2023-07-02 18:48:43 674

空空如也

空空如也

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

TA关注的人

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