【LakeHouse】LakeHouse 架构指南

news2024/11/16 16:52:42

LakeHouse 架构指南

  • 1.什么是数据湖,为什么需要数据湖
  • 2.数据湖、数据仓库和 LakeHouse 之间有什么区别
  • 3.数据湖的组件
    • 3.1 存储层 / 对象存储(AWS S3、Azure Blob Storage、Google Cloud Storage)
    • 3.2 数据湖文件格式(Apache Parquet、Avro、ORC)
    • 3.3 数据湖表格式
    • 3.4 数据湖表格式的特点
      • 3.4.1 DML 和 SQL 支持:选择、插入、更新插入、删除
      • 3.4.2 向后兼容 Schema Evolution 和 Enforcement
      • 3.4.3 ACID 事务、回滚、并发控制
      • 3.4.4 时间旅行,带有事务日志和回滚的审计历史
      • 3.4.5 分区
      • 3.4.6 文件大小调整、数据 Clustering 与压缩
      • 3.4.7 统一的批处理和流式处理
      • 3.4.8 数据共享
      • 3.4.9 变更数据流 (CDF)
    • 3.5 数据湖表格式(Delta、Iceberg、Hudi)
      • 3.5.1 Delta Lake
      • 3.5.2 Apache Iceberg
      • 3.5.3 Apache Hudi
    • 3.6 数据湖表格式比较:Delta Lake vs Apache Hudi vs Apache Iceberg
  • 4.数据湖市场趋势
  • 5.如何将数据湖变成 LakeHouse
  • 6.总结

  • 你曾经是否有构建一个开源数据湖来存储数据以进行分析需求?
  • 数据湖包括哪些组件和功能?
  • 不了解 LakeHouse数据仓库 之间的区别?
  • 或者只是想管理数百到数千个文件,并拥有更多类似数据库的功能,但不知道如何操作?

本文解释了数据湖的细节以及哪些技术可以构建一个 LakeHouse,以避免创建没有结构和孤立文件的数据沼泽。 并讨论数据湖的分析能力以及如何构建,我们将介绍何时不使用数据湖以及有哪些替代方案。

随着 Databricks 开源了完整的 Delta Lake 2.0,包含了很多高级功能以及 Snowflake 宣布集成 Iceberg 表,市场现在很火爆。

在这里插入图片描述

1.什么是数据湖,为什么需要数据湖

数据湖是一种存储系统,具有底层数据湖文件格式及其不同的数据湖表格式,可存储大量非结构化和半结构化数据,并按原样存储,但没有特定用途。广泛的技术和非技术数据消费者可以访问该数据以进行分析用例和机器学习模型,包括商业智能和报告。

数据湖还消除了通过传统 BI 工具转换数据需要使用专有格式的需要。将数据加载到数据湖中,数据团队花费时间构建和维护复杂 ETL 管道的旧瓶颈消失了,并且跳过了等待数周的数据访问请求。

有了数据湖,数据变得越来越可用,早期采用者发现他们可以通过为业务服务构建新应用程序来获取洞察力。数据湖支持使用多种不同类型的数据以低成本大规模捕获和存储原始数据。一种在顶层执行转换的可访问方式,即使最终需要哪些分析还不精确 —— 主要是快速迭代转换并探索业务价值。

数据湖(2014 年的初始数据湖论文)可以基于多种技术构建,例如 Hadoop、NoSQL、Amazon Simple Storage Service、关系数据库,或各种组合和不同格式(例如 Excel、CSV、文本、日志、Apache Parquet、Apache Arrow、Apache Avro,稍后会详细介绍)。

每个数据湖都从一个简单的存储提供程序、一种数据湖文件格式开始,然后使用我们将在本文后面探讨的数据湖表格式扩展关键的类似数据库的功能。

2.数据湖、数据仓库和 LakeHouse 之间有什么区别

那么从数据湖到 LakeHouse 有什么区别呢?LakeHouse 是数据湖和数据仓库的组合(可能还有很多其他意见)。LakeHouse 具有开放的数据管理架构,结合了数据湖的灵活性、成本效益和规模。与数据湖一样,它还具有数据湖表格式(Delta LakeApache IcebergApache Hudi)提供的数据库功能。

与数据湖相比,LakeHouse 具有额外的数据治理。它包括集群计算框架和 SQL 查询引擎。更多功能丰富的 LakeHouse 还支持数据目录和最先进的编排。

在这里插入图片描述
关于数据湖和 LakeHouse 请参阅有关现代数据基础架构的新兴架构的完整架构。

在现代数据基础设施的新兴架构中,LakeHouse 架构越来越得到认可,并通过知名供应商(包括 AWS、Databricks、Google Cloud、Starburst 和 Dremio)和数据仓库先驱的采用情况验证了这点。 LakeHouse 的基本价值在于将强大的 存储层 与一系列强大的 数据处理引擎(如 Spark、Presto、Apache Druid / Clickhouse 和 Python 库)适配。

为了结束 LakeHouse 与数据仓库进行比较,我们可以说:LakeHouse 更开放(开放格式),并且随着更多的 DIY 和不同工具,可以支持不同用例,而数据仓库更封闭(主要是闭源),为 BI 构建,完全托管,扩展成本更高。

Databricks 在 2021 年的 CIDR 论文中最先提出了 LakeHosue 的概念。

3.数据湖的组件

我们将在本部分讨论数据湖的三个主要组成部分。首先是 存储数据的物理层,接下来有一个 数据湖文件格式,它主要压缩数据以用于面向行或面向列的写入或查询,最后 数据湖表格式 位于这些文件格式之上,以提供强大的功能。

数据湖及其演变的简史:

  • Hadoop & Hive:使用 MapReduce 的第一代数据湖表格式。支持 SQL 表达式。
  • AWS S3:下一代简单数据湖存储。维护工作大大减少,并且具有出色的编程 API 接口。
  • 数据湖文件格式:适用于云的文件格式,具有面向列、压缩良好并针对分析负载进行了优化。例如 Apache ParquetApache ORCApache Avro 格式。
  • 数据湖表格式:Delta LakeApache IcebergApache Hudi,具有成熟的类数据库功能。

3.1 存储层 / 对象存储(AWS S3、Azure Blob Storage、Google Cloud Storage)

从存储层开始,我们拥有来自三大云提供商 AWS S3、Azure Blob Storage 和 Google Cloud Storage 的对象存储服务。 Web 用户界面易于使用,它的功能非常简单,事实上这些对象存储可以很好地存储分布式文件,它们还具有高度可配置性,内置了可靠的安全性和可靠性。

作为 Hadoop 的继承者,它们非常适合云中的非结构化和半结构化数据,AWS S3 是将任何格式的文件上传到云的事实上的标准。

3.2 数据湖文件格式(Apache Parquet、Avro、ORC)

数据湖文件格式更面向列,并使用附加功能压缩大文件。这里的主要参与者是 Apache ParquetApache AvroApache ORC。它是物理存储,实际文件分布在存储层上的不同存储桶中。

数据湖文件格式有助于存储数据,在系统和处理框架之间共享和交换数据。这些文件格式具有其他功能,例如拆分能力和模式演变。

在这里插入图片描述
在选择哪种数据湖文件格式时,Apache Parquet 似乎更占优势。 Avro 也很好,因为它具有复杂的模式描述语言来描述数据结构并支持模式演变。

Schema Evolution 不太重要,因为下一章中的数据湖表格式也支持这些。

3.3 数据湖表格式

数据湖表格式非常有吸引力,因为它们是数据湖上的数据库。与表相同,一种数据湖表格式将分布式文件捆绑到一个很难管理的表中。可以将其视为物理数据文件之间的抽象层,以及它们的结构以形成表格。

想象一下一次插入数百个文件。它们是上述其中一种开源数据湖文件格式,可优化列存储并高度压缩,数据湖表格式允许直接从数据湖中高效地查询数据,不需要进行转换。

数据湖表格式是数据湖文件格式的引擎。文件格式擅长以压缩方式存储大数据并将其返回以进行面向列的分析查询,但是它们缺乏额外的特性,例如 ACID 事务和对关系数据库中每个人都知道的标准 ANSI SQL 的支持。借助数据湖表格式及其开源解决方案,我们可以获得这些想要的基本功能,并且还可以获得更多,如下一章所示。

在采用数据湖表格式之前请思考:

  • 哪种格式具有我需要的最先进和最稳定的功能?
  • 哪种格式使我能够使用 SQL 轻松访问我的数据?
  • 哪种格式有动力和良好的社区支持?
  • 哪种格式提供最强大的版本控制工具?

3.4 数据湖表格式的特点

如何使用所有三种重要格式共享的数据湖表格式功能将数据库功能添加到 S3。此外该功能还有助于遵循 GDPR 政策、跟踪和审计,以及删除请求的删除。

为什么所有这些功能都是必不可少的?想象一下需要将分析数据存储在 S3 上的 Parquet 文件中。你需要对所有文件进行聚类,记录模式,同时读取和更新所有文件,找到一种备份和回滚的方法,以防你犯了错误,编写模拟更新或删除语句的繁重函数等等。这就是为什么会出现这些数据湖表格式,因为每个人都需要它们并创建了一个标准。

3.4.1 DML 和 SQL 支持:选择、插入、更新插入、删除

直接在分布式文件上提供合并、更新和删除。除了 SQL,有些还支持 Scala / Java 和 Python API。

3.4.2 向后兼容 Schema Evolution 和 Enforcement

自动模式演化是数据湖表格式的一个关键特性,因为改变格式仍然是当今数据工程师工作中的一个难题。 Schema Evolution 意味着在不破坏任何内容甚至扩大某些类型的情况下添加新列,甚至可以重命名或重新排序列,尽管这可能会破坏向后兼容性。不过我们可以更改一张表格,表格格式负责在所有分布式文件上切换它,最重要的是不需要重写表和基础文件。

3.4.3 ACID 事务、回滚、并发控制

ACID 事务确保所有更改都成功提交或回滚。确保永远不会以不一致的状态结束。有不同的并发控制,例如保证读取和写入之间的一致性。每种数据湖表格式在此处都有其他实现和功能。

3.4.4 时间旅行,带有事务日志和回滚的审计历史

随着时间的推移,数据湖表格式会版本化存储在数据湖中的大数据。您可以访问该数据的任何历史版本,通过易于审核简化数据管理,在意外写入或删除错误的情况下回滚数据,并重现实验和报告。时间旅行支持可重现的查询,可以同时查询两个不同的版本。

所有版本都使用时间旅行功能进行快照,它简化了其他复杂方法的实施,例如渐变维度(类型 2)。甚至可以像通常使用更改数据捕获 (CDC) 一样提取变更。

事务日志是每个事务自开始以来的有序记录。事务日志是通过上述许多功能使用的通用组件,包括 ACID 事务、可扩展的元数据处理和时间旅行。例如,Delta Lake 创建一个名为 _delta_log 的文件夹。

可扩展的元数据处理:这些表通过自动检查点和汇总来大规模处理大量文件及其元数据。

3.4.5 分区

分区和分区 Evolution 处理为表中的行生成分区值的繁琐且容易出错的任务,并自动跳过不必要的分区和文件。快速查询不需要额外的过滤器,表格布局可以随着数据的变化而更新。

3.4.6 文件大小调整、数据 Clustering 与压缩

可以在 Delta Lake 中使用 OPTIMIZE 压缩数据,并通过 VACUUM 设置保留日期删除旧版本(其他数据湖表格式具有类似功能)。开箱即用支持数据压缩,您可以选择不同的重写策略,例如分箱或排序,以优化文件布局和大小。优化在解决小文件问题时特别有效,您会随着时间的推移摄取小文件,但查询数千个小文件很慢,优化可以将文件重新碎片化为更大的文件,从而在许多方面提高性能。

3.4.7 统一的批处理和流式处理

统一的批处理和流式处理意味着 Lambda 架构已过时。数据架构无需在批处理和流式中区分 —— 它们都以相同的表结束,复杂性更低,速度更快。

无论是从流还是批处理中读取都没有关系。开箱即用的 MERGE 语句适用于更改应用于分布式文件的流式传输情况。这些数据湖表格式支持单个 API 和目标接收器。可以在 Beyond Lambda: Introducing Delta Architecture 或一些代码示例中看到很好的解释。

3.4.8 数据共享

减少数据重复的一个新的令人兴奋和需要的功能是数据共享。在 Delta 世界里,它被称为 Delta Sharing。 Snowflake 宣布他们也将在 Iceberg 表中具有此功能。据我了解这些是 Databricks 和 Snowflake 中的专有功能。

虽然用于安全数据共享的开源 Delta 共享协议使得与其他组织共享数据变得简单,无论他们使用哪种计算平台。

3.4.9 变更数据流 (CDF)

更改数据流 (CDF) 功能允许表跟踪表版本之间的行级更改。启用后,运行时会记录写入表中的所有数据的 “更改事件”。 CDF 包括行数据和元数据,指示是否插入、删除或更新了指定的行。

3.5 数据湖表格式(Delta、Iceberg、Hudi)

现在我们有了开源数据湖表格式最显着的特点,让我们来看看已经提到过几次的三个最突出的产品:Delta LakeApache IcebergApache Hudi
在这里插入图片描述

3.5.1 Delta Lake

Delta Lake 是一个由 Databricks 创建的开源项目,并于 2019 年 4 月 22 日通过其首次公开的 GitHub Commit 开源。 最近宣布的 Delta Lake 2.0。

使用 Spark SQL 在 Delta Lake 中创建表的示例:

--creating
CREATE TABLE default.people10m (id INT, firstName STRING, gender STRING ) USING DELTA PARTITIONED BY (gender)
LOCATION 's3a://my-bucket/delta/people10m'
--writing 
INSERT INTO default.people10m VALUES (1, 'Bruno', 'M'), (2, 'Adele', 'F');
INSERT INTO default.people10m SELECT * FROM source
--reading 
SELECT COUNT(*) > 0 AS 'Partition exists' FROM default.people10m WHERE gender = "M"

3.5.2 Apache Iceberg

Apache Iceberg 最初是在 Netflix 开发的,目的是使用 PB 级的大型表来解决长期存在的问题。 它于 2018 年作为 Apache 孵化器项目开源,并于 2020 年 5 月 19 日从孵化器毕业。他们的第一次公开提交是 2017 年 12 月 19 日 —— 更多关于 Apache Iceberg 简介的故事的见解。

在 Apache Iceberg 中使用 Spark SQL 创建表的示例:

--creating
CREATE TABLE local.db.table (id bigint, data string, category string) 
USING iceberg
LOCATION 's3://my-bucket/iceberg/table/'
PARTITIONED BY (category)
--writing 
INSERT INTO local.db.table VALUES (1, 'a'), (2, 'b'), (3, 'c');
INSERT INTO local.db.table SELECT id, data FROM source WHERE length(data) = 1;
--reading 
SELECT count(1) as count, category FROM local.db.table GROUP BY category

3.5.3 Apache Hudi

Apache Hudi 最初于 2016 年在 Uber 开发(代号和发音为 “Hoodie”),2016 年底开源(2016-12-16 首次提交),并于 2019 年 1 月提交给 Apache 孵化器。 关于 Apache 软件基金会的背景故事宣布 Apache® Hudi™ 为顶级项目。

在 Apache Hudi 中使用 Spark SQL 创建表的示例:

--creating
create table if not exists hudi_table (id int,  name string,  price double)
using hudi options ( type = 'cow' )
partitioned by (name)
location 's3://my-bucket//hudi/hudi_table';
--writing (dynamic partition)
insert into hudi_table partition (name) select 1, 'a1', 20;
--reading
select count(*) from hudi_table

3.6 数据湖表格式比较:Delta Lake vs Apache Hudi vs Apache Iceberg

Delta Lake 在 GitHub 上的 Star 最多,可能是 Delta Lake 2.0 发布以来最成熟的。 Apache Iceberg 和 Hudi 的 GitHub 贡献者比 Delta 多得多,Delta 大约 80% 来自 Databricks。

Hudi 开源时间最长,功能最多。 Iceberg 和 Delta 在最近的公告中势头强劲,Hudi 为流式处理提供了最大的便利,Iceberg 支持与数据湖文件格式(ParquetAvroORC)的大多数集成。

Onehouse.ai 的读 / 写功能的全面概述:

在这里插入图片描述

Onehouse.ai 的数据湖表服务比较:

在这里插入图片描述

4.数据湖市场趋势

随着最近在 Snowflake 峰会和数据与人工智能峰会上的公告,开源数据湖表格式市场火爆。 Snowflake 和 Databricks 宣布了 Apache Iceberg Tables 的重要一步,将开源 Apache Iceberg 的功能与 Apache Parquet 相结合。 Databricks 开源了所有 Delta Lake,包括以前的高级功能,例如 Delta Lake 2.0 的 OPTIMIZE 和 Z-ORDER。

其他市场趋势正在进一步将数据湖表格式商业化,例如 Onehouse for Apache Hudi 以及 Starburst 和 Dremio 都推出了他们的 Apache Iceberg 产品。 4 月谷歌在今年早些时候宣布支持 BigLake 和 Iceberg,但它现在也支持 Hudi 和 Delta。

数据湖表格式有很大的发展空间;每个大供应商要么自己拥有一个,要么正在寻找完美的开源。到现在为止,你也应该明白为什么了。对我们有利的是所有这些技术都建立在开源数据湖文件格式(Apache ParquetORCAvro)之上,这对我们所有人来说都是好消息。

在这里插入图片描述

5.如何将数据湖变成 LakeHouse

数据湖和 LakeHouse 的一个重要部分是数据治理。治理主要围绕数据质量、可观察性、监控和安全性,没有它将直接进入数据沼泽。

数据治理对大公司来说是一件大事。在这种情况下 LakeHouse 的实现和功能在这里有所帮助。这些专注于可靠性和强大的治理,并具有更多集成功能。但许多数据治理也设置了正确的流程和访问权限。让跨职能团队以透明的方式快速处理数据。

总结到目前为止的基本部分,从简单的 S3 存储扩展到成熟的 LakeHouse,可以按照以下步骤操作:

  • 1️⃣ 选择合适的数据湖文件格式。
  • 2️⃣ 将上述内容与要使用的最能支持您的用例的数据湖表格式相结合。
  • 3️⃣ 选择要存储实际文件的云提供商和存储层。
  • 4️⃣ 在 LakeHouse 之上和组织内部构建一些数据治理。
  • 5️⃣ 将数据加载到数据湖或 LakeHouse 中。

替代方案或何时不使用数据湖或 LakeHouse:如果需要数据库。不要使用 JSON 代替 PostgresDB。当需要在不移动数据的情况下快速查询多个数据源时可以利用数据虚拟化技术。

6.总结

在本文中我们了解了数据湖和 LakeHouse 之间的区别。 2022 年市场在做什么,如何将数据湖变成数据湖。它的存储层、数据湖文件格式和数据湖表格式这三个层次都具有强大的功能,其中开源表格式有 Apache HudiIcebergDelta Lake

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1501823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码

1 老鼠迷宫问题 迷宫中的老鼠,作为另一个可以使用回溯解决的示例问题。 迷宫以块的NN二进制矩阵给出,其中源块是最左上方的块,即迷宫[0][0],目标块是最右下方的块,即迷宫[N-1][N-1]。老鼠从源头开始,必须…

R语言 | 复数 相关函数

问题 大家好&#xff0c;我有一个问题&#xff0c;我看到一个函数如下&#xff1a; L2_distance <- function(A, B){rowA <- apply(A*A, 1, sum)matrixA <- matrix(rep(rowA, eachlength(rowA)), nrowlength(rowA), byrowT)rowB <- apply(B*B, 1, sum)matrixB &l…

Elasticsearch:什么是 DevOps?

DevOps 定义 DevOps 是一种现代软件开发方法&#xff0c;它将公司软件开发 (Dev) 和 IT 运营 (Ops) 团队的工作结合起来并实现自动化。 DevOps 提倡这样一种理念&#xff1a;这些传统上独立的团队在协作方面比在孤岛中更有效。 理想情况下&#xff0c;DevOps 团队共同努力改进…

App拉起微信小程序参考文章

App拉起微信小程序参考文章h5页面跳转小程序-----明文URL Scheme_weixin://dl/business/?appid*appid*&path*path*&qu-CSDN博客文章浏览阅读561次&#xff0c;点赞16次&#xff0c;收藏5次。仅需两步&#xff0c;就能实现h5跳转小程序&#xff0c;明文 URL Scheme&…

Java面试——Netty

优质博文&#xff1a;IT-BLOG-CN 一、BIO、NIO 和 AIO 【1】阻塞 IO(Blocking I/O)&#xff1a; 同步阻塞I/O模式&#xff0c;当一条线程执行 read() 或者 write() 方法时&#xff0c;这条线程会一直阻塞直到读取一些数据或者写出去的数据已经全部写出&#xff0c;在这期间这条…

HybridCLR热更新介绍

官方文档 参照视频 HybridCLR介绍 HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案 HybridCLR与ToLua/XLua、ILRuntime有什么不同 什么是游戏热更新&#xff1a;有热更的游戏更新流程 游戏热更新的种类 资源热更新&#xff1a;主要…

Stable Diffusion WebUI 中英文双语插件(sd-webui-bilingual-localization)并解决了不生效的情况

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 大家好&#xff0c;我是水滴~~ 本文介绍一款中英文对照插件 sd-webui-bilingual-localization&#xff0c;该插件可以让你的 Stable Diffusion WebUI 界面同时显示中文和英文&#xff0c;让我…

设计模式学习笔记 - 设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器

前言 接下来我们在结合一个支持各种统计规则的性能计数项目&#xff0c;学习针对一个非业务的通用框架开发&#xff0c;如何来做需求分析、设计和实现&#xff0c;同时学习如何灵活应用各种设计原则。 项目背景 设计开发一个小的框架&#xff0c;能够获取接口调用的各种统计信…

Compose UI 之 MediumLarge TopAppBar

Medium&Large TopAppBar 前面文章介绍了 Small 类型的 TopAppBar&#xff1a;TopAppBar CenterAlignedTopAppBar 。下来介绍 Medium 和 Large 类型的 TopAppBar&#xff1a;MediumTopAppBar LargeTopAppBar 。 MediumTopAppBar 上面介绍了Small 类型的 TopAppBar (TopAp…

数字人ai直播软件突破AI大模型技术,改变未来科技格局!

数字人AI直播软件在AI大模型技术上的突破&#xff0c;将不可避免地改变未来科技格局。这一突破让人们看到了AI技术的无限可能性&#xff0c;并为未来的科技发展打开了新的大门。 AI大模型技术是近年来人工智能领域的一个热点&#xff0c;它通过构建庞大、复杂的神经网络模型&a…

海外互联网专线主要解决企业哪些办公问题?

海外互联网专线 是一种专门为跨境企业提供的网络连接服务&#xff0c;旨在解决企业在海外办公过程中遇到的各种网络问题。海外互联网专线如何成为解决企业办公难题的利器&#xff0c;为企业提供稳定、高速的网络连接? 1、跨国远程办公&#xff1a; 随着全球化进程的加速&…

SpringCloud Ribbon 负载均衡服务调用

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第三篇&#xff0c;即介绍 Ribbon 负载均衡服务调用 二、概述 2.1 Ribbon 是什么 Spring Cloud Ribbon…

【博士每天一篇文献-综述】Modular Brain Networks

阅读时间&#xff1a;2023-11-27 1 介绍 年份&#xff1a;2016 作者&#xff1a;Olaf Sporns&#xff0c;Richard Betzel&#xff0c;印第安纳大学心理与脑科学杰出教授 期刊&#xff1a; Annual review of psychology 引用量&#xff1a;1205 详细介绍了模块化大脑网络及其如…

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;IntelliJ IDEA为Web服务器提供了卓越的支持&#xff0c;从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源&#xff0c;这些资源在完成开发后&…

宠物空气净化器值得入手吗?选购宠物空气净化器关注哪些方面?

一开始养猫时&#xff0c;每天看着可爱的猫咪在家里快乐奔跑&#xff0c;让人心情愉悦。然而&#xff0c;作为铲屎官都知道&#xff0c;猫咪会掉毛&#xff0c;特别是在换毛期间&#xff0c;地板、沙发上都会有一大堆猫毛&#xff0c;甚至衣服也可能沾满猫毛。养猫家庭中&#…

Flink 物理执行图

文章目录 物理执行图一、Task二、ResultPartition三、ResultSubpartition四、InputGate五、InputChannel 物理执行图 JobManager根据ExecutionGraph对作业进行调度&#xff0c;并在各个TaskManager上部署任务。这些任务在TaskManager上的实际执行过程就形成了物理执行图。物理…

快速上手:使用Hexo搭建并自定义个人博客

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

算法---双指针练习-6(查找总价格为目标值的两个商品)

查找总价格为目标值的两个商品 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 算法的基本思想是首先初始化两个指针begin和end&#xff0c;分别指向数组的起始位置和末尾位置。 接下来&#xff0c;算法使用一个循环来移动e…

瑞芯微 | I2S-音频基础分享

1. 音频常用术语 名称含义ADC&#xff08;Analog to Digit Conversion&#xff09;模拟信号转换为数字信号AEC&#xff08;Acoustic Echo Cancellor&#xff09;回声消除AGC&#xff08;Automatic Gain Control&#xff09;自动增益补偿&#xff0c;调整MIC收音量ALSA&#xf…

Stable Diffusion 3报告

报告链接&#xff1a;https://stability.ai/news/stable-diffusion-3-research-paper 文章目录 要点表现架构细节通过重新加权改善整流流量Scaling Rectified Flow Transformer Models灵活的文本编码器RF相关论文 要点 发布研究论文&#xff0c;深入探讨Stable Diffuison 3的…