数据治理之关键环节元数据管理开源项目datahub探索

news2024/12/24 8:14:25

文章目录

  • 概述
    • 定义
    • 核心功能
    • 概念
    • 元数据应用
    • 其他开源
  • 架构
    • 概览
    • 组件
    • 元数据摄取架构
    • 服务体系结构
  • 本地部署
    • 环境要求
    • 安装
    • 摄取样例
  • 摄取入门
    • 介绍
    • 核心概念
    • 命令行MySQL摄取示例
    • 配置ClickHouse摄取示例

概述

定义

datahub 官网地址 https://datahubproject.io/ 最新版本v0.10.2

datahub 官网文档地址 https://datahubproject.io/docs/

datahub 源码地址 https://github.com/datahub-project/datahub

DataHub是一个面向现代数据栈的开源元数据平台,依赖于元数据管理的现代方法。其前身是LinkedIn为了提高数据团队的工作效率,开发并开源的WhereHows;DataHub的可扩展元数据平台支持数据发现、数据可观察性和联合治理,有助于控制数据生态系统的复杂性。

DataHub是一个现代数据目录,旨在实现端到端数据发现、数据可观察性和数据治理。这个可扩展的元数据平台是为开发人员构建的,以控制其快速发展的数据生态系统的复杂性,并为数据从业者利用其组织内数据的总价值。

元数据是开启数据治理的探索之路的关键环节。

在DAMA-DMBOK2中描述元数据最常见的定义是“关于数据的数据”。这个定义非常简单,但也容易引起误解。可以归类为元数据的信息范围很广,不仅包括技术和业务流程、数据规则和约束,还包括逻辑数据结构与物理数据结构等。它描述了数据本身(如数据库、数据元素、数据模型),数据表示的概念(如业务流程、应用系统、软件代码、技术基础设施),数据与概念之间的联系(关系)。元数据可以帮助组织理解其自身的数据、系统和流程,同时帮助用户评估数据质量,对数据库与其他应用程序的管理来说是不可或缺的。它有助于处理、维护、集成、保护和治理其他数据。

  • 如果没有可靠的元数据,组织就不知道它拥有什么数据、数据表示什么、数据来自何处、它如何在系统中流转,谁有权访问它,或者对于数据保持高质量的意义。
  • 如果没有元数据,组织就不能将其数据作为资产进行管理。
  • 实际上,如果没有元数据,组织可能根本无法管理其数据

简而言之,元数据是“ 提供有关其他数据的信息的数据,元数据也是数据,元数据管理是为了对数据资产进行有效的组织。它使用元数据来帮助管理他们的数据。它还可以帮助数据专业人员收集、组织、访问和丰富元数据,以支持数据治理。

DataHub有巨大的生态系统,预构建集成包括Kafka, Airflow, MySQL, SQL Server, Postgres, LDAP, Snowflake, Hive, BigQuery等等;且社区正在不断添加更多的集成。

核心功能

  • 搜索和发现
    • 搜索数据堆栈的所有角落:DataHub的统一搜索体验显示了跨数据库、数据湖、BI平台、ML功能商店、编排工具等的搜索结果。
    • 跟踪端到端沿袭:通过跟踪跨平台、数据集、ETL/ELT管道、图表、仪表板等的沿袭,快速了解数据的端到端旅程。
    • 理解中断变更对下游依赖关系的影响:使用影响分析主动识别哪些实体可能受到破坏性更改的影响。
    • “元数据360”概览:结合技术和逻辑元数据,提供数据实体的360º视图。生成数据集统计以了解数据的形状和分布。
      • 从Great Expectations等工具获取历史数据验证结果。
      • 利用DataHub的Schema Version History跟踪数据物理结构随时间的变化。
  • 现代数据治理
    • 实时治理:action框架支持以下实时用例
      • 通知:在DataHub上进行更改时生成特定于组织的通知。例如,当向任何数据资产添加“PII”标记时,向治理团队发送电子邮件。
      • 工作流集成:将DataHub集成到组织的内部工作流中。例如,当在数据集上提出特定的标签或术语时,创建Jira票据。
      • 同步:将DataHub中的更改同步到第三方系统。例如,将DataHub中的标记添加反映到Snowflake中。
      • 审计:随着时间的推移,审计谁对DataHub进行了哪些更改。
    • 管理实体所有权:快速方便地为用户和用户组分配实体所有权。
    • 使用标签、术语表和域进行管理:授权数据所有者通过以下方式管理其数据实体
      • 标签:非正式的,松散控制的标签,作为搜索和发现的工具。没有正式的中央管理。
      • 术语表术语:具有可选层次结构的受控词汇表,通常用于描述核心业务概念和度量。
      • 域:精心策划的顶级文件夹或类别,广泛用于数据网格中,按部门(如财务、营销)或数据产品组织实体。
    • DataHub管理
      • 创建用户、组和访问策略:DataHub管理员可以创建policy来定义谁可以对哪些资源执行哪些操作。当您创建一个新的策略时,您将能够定义以下内容
        • 策略类型—平台(顶级DataHub平台特权,即管理用户、组和策略)或元数据(操纵所有权、标记、文档等的能力)
        • 资源类型——指定资源的类型,如数据集、仪表板、管道等
        • 特权-选择一组权限,如编辑所有者、编辑文档、编辑链接
        • 用户及/或群组-分配相关的用户及群组;您还可以将策略分配给资源所有者,而不管他们属于哪个组
      • 从UI中摄取元数据:使用DataHub用户界面创建、配置、调度和执行批处理元数据摄取。通过最小化操作定制集成管道所需的开销,这使得将元数据放入DataHub变得更加容易。
    • 元数据管理的现代方法
      • 自动元数据摄取:基于推送的摄取可以使用预构建的发射器,也可以使用我们的框架发出自定义事件。基于拉的摄取抓取元数据源。我们已经与Kafka, MySQL, MS SQL, Postgres, LDAP, Snowflake, Hive, BigQuery等进行了预构建集成。摄取可以自动使用我们的气流集成或其他调度选择。
      • 发现可信数据:浏览和搜索不断更新的数据集、仪表板、图表、ML模型等目录。
      • 理解数据背景:DataHub是文档、模式、所有权、沿袭、管道、数据质量、使用信息等方面的一站式商店。

概念

  • 通用概念
    • 统一资源名称URN (Uniform Resource Name):是用来唯一定义DataHub中任何资源的URI方案。格式 urn:::
    • 策略:DataHub中的访问策略定义谁可以对哪些资源做什么。
    • 角色:DataHub提供了使用角色来管理权限的功能。
    • 访问令牌(个人访问令牌):个人访问令牌(Personal Access Tokens,简称pat)允许用户在代码中表示自己,并在关注安全性的部署中以编程方式使用DataHub的api。PATs与启用身份验证的元数据服务一起使用,为DataHub增加了一层保护,只有授权用户才能以自动化的方式执行操作。
    • 视图:允许您保存和共享过滤器集,以便在浏览DataHub时重用。视图可以是公共的,也可以是个人的。
    • 弃用:是指示实体弃用状态的方面,通常它表示为布尔值。
    • 摄入来源:指的是我们从中提取元数据的数据系统。例如有BigQuery、Looker、Tableau和其他许多数据源。
    • 容器:相关数据资产的容器。
    • 数据平台:是包含数据集、仪表板、图表和元数据图中建模的所有其他类型数据资产的系统或工具。
    • 数据集:代表了通常在数据库中以表或视图表示的数据集合(例如BigQuery, Snowflake, Redshift等),流处理环境中的流(Kafka, Pulsar等),数据湖系统(S3, ADLS等)中以文件或文件夹形式存在的数据束。
    • 图表:从数据集派生的单个数据可视化。单个图表可以是多个仪表板的一部分。图表可以附带标签、所有者、链接、术语表和描述。例子包括超集或观察者图。
    • 指示板:用于可视化的图表集合。仪表板可以附加标签、所有者、链接、术语表和描述。例子包括Superset或Mode Dashboard。
    • 数据工作:处理数据资产的可执行作业,其中“处理”意味着使用数据、生成数据或两者兼而有之。在编排系统中,这有时被称为“DAG”中的单个“任务”。例如Airflow任务。
    • 数据流:具有依赖关系的数据作业的可执行集合,或DAG。有时被称为“管道”。例如AirflowDAG。
    • 术语表术语:数据生态系统中的共享词汇表。
    • 术语组:类似于一个文件夹,包含术语甚至其他术语组,以允许嵌套结构。
    • 标签:是非正式的,松散控制的标签,有助于搜索和发现。可以将它们添加到数据集、数据集模式或容器中,以一种简单的方式对实体进行标记或分类,而不必将它们与更广泛的业务术语表或词汇表关联。
    • 域:是精心策划的顶级文件夹或类别,相关资产可以在其中显式分组。
    • 所有者:是指对实体具有所有权的用户或组。例如,所有者可以访问数据集或列。
    • 用户(主体):CorpUser表示企业中个人(或帐户)的身份。
    • 组(CorpGroup):表示企业中一组用户的身份。
  • 元数据模型
    • 实体:是元数据图中的主节点。例如数据集或CorpUser的实例是一个实体。
    • 方面:是描述实体的特定切面的属性集合。方面可以在实体之间共享,例如,“所有权”是一个可以在所有拥有所有者的实体之间重用的方面。
    • 关系:表示两个实体之间的命名边。它们是通过切面中的外键属性以及自定义注释(@Relationship)声明的。

元数据应用

元数据管理一般具备如下功能:

  • **搜索和发现:**数据表、字段、标签、使用信息
  • **访问控制:**访问控制组、用户、策略
  • **数据血缘:**管道执行、查询
  • **合规性:**数据隐私/合规性注释类型的分类
  • **数据管理:**数据源配置、摄取配置、保留配置、数据清除策略
  • **AI 可解释性、再现性:**特征定义、模型定义、训练运行执行、问题陈述
  • **数据操作:**管道执行、处理的数据分区、数据统计
  • **数据质量:**数据质量规则定义、规则执行结果、数据统计

其他开源

Apache Atlas 官网地址 https://atlas.apache.org/ 最新版本2.3.0

Apache Atlas 源码地址 https://github.com/apache/atlas

Apache Atlas是一套可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规要求,并允许与整个企业数据生态系统集成;Apache Atlas为组织提供开放的元数据管理和治理功能,以构建数据资产的目录,对这些资产进行分类和治理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作功能。有官方文档,部署比较重

Amundsen 官网地址 https://www.amundsen.io/amundsen/ 最新版本4.1.1

Amundsen 源码地址 https://github.com/amundsen-io/amundsen

Amundsen是一个开源数据发现和元数据引擎,用于提高数据分析师、数据科学家和工程师在与数据交互时的生产力。今天,它通过索引数据资源(表、仪表板、流等)和基于使用模式的页面级搜索来实现这一点(例如,查询次数多的表比查询次数少的表显示得早)。可以把它想象成谷歌数据搜索;有官方文档

Marquez 官网地址 https://marquezproject.ai/ 最新版本0.33.0

Marquez 源码地址 https://github.com/MarquezProject/marquez

Marquez是一个开源元数据服务,用于收集、聚合和可视化数据生态系统的元数据。它维护数据集如何被消费和产生的来源,提供作业运行时和数据集访问频率的全局可见性,数据集生命周期管理的集中化等;Marquez是由WeWork发布并开源的。有官方文档

Metacat 源码地址 https://github.com/Netflix/metacat 最新版本1.2.2

Metacat是一个统一的元数据探索API服务。可以探索Hive, RDS, Teradata, Redshift, S3和Cassandra。Metacat提供有哪些数据、数据位于何处以及如何处理这些数据的信息。没有官方文档,且2019年后没有发布新的release版本

架构

概览

DataHub是第三代元数据平台,支持为现代数据栈构建的数据发现、协作、治理和端到端可观察性。DataHub采用模型优先的理念,专注于解锁不同工具和系统之间的互操作性。

image-20230508173802580

Acryl DataHub System Architecture

DataHub的架构有三个主要亮点

  • 模式优先的元数据建模方法:DataHub的元数据模型使用与序列化无关的语言进行描述。它支持REST和GraphQL api。此外,DataHub支持基于avro的API,通过Kafka来通信和订阅元数据更改。
  • 基于流的实时元数据平台:DataHub的元数据基础设施是面向流的,这使得元数据的变化可以在几秒钟内在平台内进行通信和反映。可以订阅DataHub元数据中发生的变化,从而构建实时的元数据驱动系统。例如可以构建一个访问控制系统,该系统可以通过添加包含PII的新模式字段来观察以前的世界可读数据集,并锁定该数据集以进行访问控制检查。
  • 联邦元数据服务:DataHub附带了一个元数据服务(gms),作为开源存储库的一部分。然而,它也支持联合元数据服务,这些服务可以由不同的团队拥有和运营——事实上,这就是LinkedIn内部运行DataHub的方式。联邦服务使用Kafka与中央搜索索引和图形通信,以支持全局搜索和发现,同时仍然支持元数据的去耦所有权。这种架构非常适合实现数据网格的公司。

组件

DataHub平台由如下图所示的组件组成

  • 元数据存储:负责存储组成元数据图的实体和方面。这包括公开用于摄取元数据、按主键获取元数据、搜索实体和获取实体之间关系的API。它由一个Spring Java Service托管一组Rest组成。li API端点,以及MySQL, Elasticsearch和Kafka用于主存储和索引。
  • 元数据模型:是定义组成元数据图的实体和方面的形状以及它们之间的关系的模式。它们是使用PDL定义的,PDL是一种建模语言,在形式上与Protobuf非常相似,同时序列化为JSON。实体表示元数据资产的特定类,如数据集、仪表板、数据管道等。实体的每个实例由一个称为urn的唯一标识符标识。方面表示附加到实体实例的相关数据束,例如其描述、标记等。
  • 摄入框架:是一个模块化的,可扩展的Python库,用于从外部源系统(如Snowflake, Looker, MySQL, Kafka)提取元数据,将其转换为DataHub的元数据模型,并通过Kafka或直接使用元数据存储Rest api将其写入DataHub。DataHub支持广泛的源连接器列表可供选择,以及一系列功能,包括模式提取、表和列分析、使用信息提取等。
  • GraphQL API:提供了一个强类型的、面向实体的API,使得与组成元数据图的实体的交互变得简单,包括用于添加和删除标签、所有者、链接和更多元数据实体的API ,用户界面也是使用该API来实现搜索和发现、治理、可观察性等功能。
  • 用户接口:DataHub带有一个React UI,其中包括一组不断发展的功能,使发现,管理和调试数据资产变得轻松愉快。

元数据摄取架构

DataHub支持极其灵活的摄取架构,可以支持推、拉、异步和同步模型。

image-20230509134559812

  • 元数据更改建议-中心部分:摄取的中心部分是元数据更改建议,它表示对组织的元数据图进行元数据更改的请求。元数据变更建议可以通过Kafka发送,用于从源系统进行高度可扩展的异步发布。它们还可以直接发送到DataHub服务层公开的HTTP端点,以获得同步的成功/失败响应。
  • 基于拉集成:DataHub附带了一个基于Python的元数据摄取系统,该系统可以连接到不同的源以从中提取元数据。这些元数据然后通过Kafka或HTTP推送到DataHub存储层。元数据摄取管道可以与AirFlow集成,以设置预定的摄取或捕获沿袭。如果找不到已经支持的源代码,那么编写自己的源代码也是非常容易的。
  • 基于推集成:只要可以向Kafka发出一个元数据更改建议(Metadata Change Proposal, MCP)事件,或者通过HTTP进行一个REST调用,就可以将任何系统与DataHub集成。为方便起见,DataHub还提供了简单的Python发射器,可以将其集成到系统中,从而在源点发出元数据更改(MCP-s)。
  • 内部组件:将元数据更改建议应用于DataHub元数据服务(mce-consumer-job);DataHub附带了一个Spring作业mce-consumer-job,该作业使用元数据更改建议并使用/ingest端点将其写入DataHub元数据服务(DataHub -gms)。

服务体系结构

DataHub服务层的高级系统关系图如下:

image-20230509135414277

主组件称为元数据服务,它公开了一个REST API和一个GraphQL API,用于对元数据执行CRUD操作。该服务还公开了搜索和图形查询api,以支持二级索引样式的查询、全文搜索查询以及血缘等关系查询。此外数据中心前端服务在元数据图之上公开GraphQL API。DataHub服务层组件:

  • 元数据存储:DataHub元数据服务将元数据保存在文档存储中(如MySQL、Postgres或Cassandra等RDBMS)。
  • 元数据变更日志流(MCL):当元数据更改成功提交到持久存储时,DataHub服务层还会发出提交事件元数据更改日志。该事件通过Kafka发送。MCL流是一个公共API,可以由外部系统(例如Actions Framework)订阅,提供了一种非常强大的方式来实时响应元数据中发生的变化。例如可以构建一个访问控制强制器,对元数据的变化做出反应(例如,以前的世界可读数据集现在有一个pii字段),以立即锁定有问题的数据集。注意并非所有mcp都会导致MCL,因为DataHub服务层将忽略对元数据的任何重复更改。
  • 元数据索引应用程序(mae-consumer-job):元数据更改日志由另一个Spring作业mae-consumer-job使用,该作业将相应的更改应用于图和搜索索引。该作业与实体无关,并将执行相应的图形和搜索索引构建器,当特定的元数据方面发生更改时,作业将调用该构建器。构建器应该指导作业如何根据元数据更改更新图和搜索索引。为了确保按正确的时间顺序处理元数据更改,mcl由实体URN进行键控——这意味着一个特定实体的所有mae将由单个线程依次处理。
  • 元数据查询服务:基于主键的元数据读取(例如基于dataset-urn获取数据集的模式元数据)被路由到文档存储。基于二级索引对元数据的读取被路由到搜索索引(或者也可以使用这里描述的强一致性二级索引支持)。全文和高级搜索查询被路由到搜索索引。复杂的图查询(如沿袭)被路由到图索引。

本地部署

环境要求

  • Docker
  • Docker Compose v2
  • Python 3.7+

安装

# 安装DataHub命令行
python3 -m pip install --upgrade pip wheel setuptools
python3 -m pip install --upgrade acryl-datahub
datahub version

image-20230508171512658

# 本地部署DataHub实例,使用docker-compose部署一个DataHub实例
datahub docker quickstart

image-20230509111036724

成功启动后则可以直接访问DataHub UI (http://hadoop2:9002),登录用户名和密码为datahub/datahub,登录后主页如下

image-20230509111145674

# 也可以直接下载https://raw.githubusercontent.com/datahub-project/datahub/master/docker/quickstart/docker-compose-without-neo4j-m1.quickstart.yml这个文件,也可以下载指定版本的https://github.com/datahub-project/datahub/archive/refs/tags/v0.10.2.tar.gz,最后找到相应docker-compose文件然后通过docker-compose启动
docker-compose -f docker-compose-without-neo4j-m1.quickstart.yml up -d
# 如要停止DataHub的快速启动,可以发出以下命令。
datahub docker quickstart --stop
# 重置DataHub,要清除DataHub的所有状态(例如,在摄取自己的状态之前),可以使用CLI的nuke命令
datahub docker nuke

摄取样例

# 摄取样例元数据可以使用下面命令,执行命令后可以查看摄取数据
datahub docker ingest-sample-data

image-20230509141820105

查看具体元数据信息
image-20230509142135678

还支持查看谱系或者沿袭,也即是常说血缘关系

image-20230511153635290

摄取入门

介绍

DataHub支持基于推和基于拉的元数据集成。

  • 基于推送的集成允许在元数据更改时直接从数据系统发出元数据,而基于拉的集成允许通过连接到数据系统并以批处理或增量批处理的方式提取元数据,从而从数据系统“抓取”或“摄取”元数据。支持这两种机制意味着可以以最灵活的方式与所有系统集成。
  • 内置在DataHub中的基于拉的元数据摄取系统,该系统可以轻松地与数据堆栈中的各种数据源集成。

核心概念

  • 数据源:从中提取元数据的数据系统称为数据源。摄取元数据的所有源例如BigQuery、Looker、Tableau等其他许多数据源,目前官方上有55个。

  • 接收器:是元数据的目的地。在为DataHub配置摄取时,可能会通过REST (DataHub -sink)或Kafka (DataHub - Kafka)接收器将元数据发送到DataHub。在某些情况下,文件接收器还有助于在调试期间存储元数据的持久脱机副本。大多数摄取系统和指南假设的默认接收器是数据中心休息接收器,但是您也应该能够为其他接收器调整所有接收器!

  • 食谱:配方是将所有这些组合在一起的主要配置文件。它告诉我们的摄取脚本从哪里提取数据(源),在哪里放置数据(接收)。

  • 处理食谱中的敏感信息:自动扩展配置中的环境变量(例如${MSSQL_PASSWORD}),类似于GNU bash或docker-compose文件中的变量替换。应该使用这种环境变量替换来掩盖配方文件中的敏感信息。只要您可以安全地将环境变量获取到摄取过程中,就不需要在配方中存储敏感信息。

  • 转换:如果希望在数据到达摄取接收器之前对其进行修改——例如添加额外的所有者或标记——可以使用转换器编写自己的模块,并将其与DataHub集成。

命令行MySQL摄取示例

在获取数据源的时候,只需要编写简单的yml文件就可以完成元数据的获取。这里采集MySQL数据库名为nacos_config

image-20230511112900432

先检查是否有datahub的mysql和datahub-rest插件

image-20230510185436313

# 安装datahub mysql插件
pip install 'acryl-datahub[mysql]'
# 查看datahub 插件列表
python3 -m datahub check plugins

image-20230511112327746

编写摄取文件,vim mysql_to_datahub_rest.yml

source:
  type: mysql
  config:
    # Coordinates
    host_port: 192.168.50.95:3306
    database: nacos_config

    # Credentials
    username: root
    password: 123456
sink:
  type: "datahub-rest"
  config:
    server: "http://localhost:8080"

通过命令执行摄取

datahub ingest -c mysql_to_datahub_rest.yml

image-20230511112438782

通过UI页面也可以查看摄取记录

image-20230511112544527

查看刚刚添加数据库集

image-20230511113221446

配置ClickHouse摄取示例

这里建立ClickHouse的测试数据库名为test

image-20230511143129729

# 安装clickhouse驱动
pip install 'acryl-datahub[clickhouse]'

编写摄取文件,vim clickhouse_to_datahub_rest.yml

 source:
  type: clickhouse
  config:
    host_port: clickhouse-server:8123
    protocol: http

    # Credentials
    username: default
    password: 123456

    # Options,在datahub UI采集元数据显示的名称
    platform_instance: test

    include_views: True # whether to include views, defaults to True
    include_tables: True # whether to include views, defaults to True
sink:
  type: "datahub-rest"
  config:
    server: "http://localhost:8080"        

通过命令执行摄取

datahub ingest -c clickhouse_to_datahub_rest.yml

image-20230511145859713

  • 本人博客网站IT小神 www.itxiaoshen.com

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

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

相关文章

怎么将m4a转换成mp3?这三种方法不妨试试看吧

将M4A转换为MP3具有重要作用。首先,MP3格式是一种通用的音频格式,几乎所有的播放器和设备都支持它。而M4A格式则不如MP3格式广泛。如果我们想在多个设备上播放M4A音频文件,有时候需要将其转换为MP3格式。其次,M4A文件通常比MP3文件…

计算机专业含金量高的证书

目录 第一种证书:计算机技术与软件专业资格考试证书 第二种证书:微软认证 第三种证书:Oracle认证 第四种证书:思科认证 第五种证书:华为认证 第六种证书:红帽认证工程师 第七种证书:阿里…

Python每日一练(20230512) 跳跃游戏 V\VI\VII

目录 1. 跳跃游戏 V 2. 跳跃游戏 VI 3. 跳跃游戏 VII 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 跳跃游戏 V 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&a…

蒙层禁止下方页面滚动防抖动完美方案

学习链接 js如何禁止滚动条滚动,但不消失! - 这个是完美解决方案(在线demo示例) 解决窗口滚动条消失而导致的页面内容抖动的问题 完美解决js 禁止滚动条滚动,并且滚动条不消失,页面大小不闪动 蒙层禁止…

【Python数据类型-元组】------- PYTHON基础11

内容目录 一、 元组1. 元组的构建2. 元组的索引3. 元组和列表的区别及相互转换3.1. 列表转为元组,通过内置函数tuple()实现,比如:3.2. 元组转为列表,通过内置函数list()实现 4. 元组的基本操作:更新, 删除&…

用于colmap重建结果、pcd/ply、6D位姿的点云可视化工具

工具介绍:提供一款用于点云可视化windows的工具 可视化的对象包括: 1、colmap重建结果 2、pcd\ply格式的点云 3、位姿R|t可视化 4、在线接收点python发送的坐标 其他功能:点云保存、颜色修改、点云隐藏、点云大小调整 工具地址&#xff1a…

Qt之QGraphicsEffect的简单使用(含源码+注释)

文章目录 一、效果示例图1.效果演示图片3.弹窗演示图片 二.问题描述三、源码CFrame.hCFrame.cppCMainWindow.hCMainWindow.cpp 总结 一、效果示例图 1.效果演示图片 3.弹窗演示图片 二.问题描述 (因为全是简单使用,毫无技巧,直接描述问题&a…

计算机视觉的深度学习 Lecture3:Linear Classifiers 笔记 EECS 498.008

注意到每一行完成一类的分类 事先思考一下loss的可能值有助于debug。如果W随机为高斯分布,μ为0.001,那么下面sj-syi就会很小,Li的值接近C-1,C为分类数 正则化表达式: 如果score都是随机很小的数,近似意…

博客管理系统--博客详情页、登录页

登录页实现强制登录 URL解决后;现在到查看全文按钮。我们点击这个查看全文我们就跳转到博客详情页。 我们希望就是在这个页面;把这些写死的数据换成从后端获取的。 1:约定前后端交互接口 请求:GET /blog?blogId1 (这样子写和博…

总结848

学习目标: 月目标:5月(张宇强化前10讲,背诵15篇短文,熟词僻义300词基础词) 周目标:张宇强化前3讲并完成相应的习题并记录,英语背3篇文章并回诵 每日必复习(5分钟&#…

【连续介质力学】向量

向量的代数操作 加法 a ⃗ \vec a a , b ⃗ \vec b b 为任意向量 c ⃗ a ⃗ b ⃗ b ⃗ a ⃗ \vec c \vec a \vec b \vec b \vec a c a b b a 减法 d ⃗ a ⃗ − b ⃗ \vec d \vec a- \vec b d a −b 标量乘法 λ a ⃗ \lambda \vec a λa , 与 a ⃗ \vec a a 相同…

ubuntu18 使用matplotlib画图

一、安装virtualenvwrapper 1.确认virtualenvwrapper是否已安装: 打开Termianl终端,执行指令:which virtualenvwrapper.sh查询virtualenvwrapper.sh的路径,如果没有提示,则表明virtualenvwrapper.sh没有安装。 2.安…

Codeforces Round 871 (Div. 4) G 记忆化搜索+二分 你没见过的解法!

G. Hits Different 记dp数组为答案数组 首先 dp[2] 2 2 2^2 22 1 2 1^2 12 dp[3] 3 2 3^2 32 1 2 1^2 12 dp[5] 2 2 2^2 22 3 2 3^2 32 1 2 1^2 12 不难发现dp[5]dp[2]dp[3]-dp[1] 同理dp[25]dp[18]dp[19]-dp[13] 接下来就是愉快的找公式时间 观察到题目中给的每一层塔的级数 (…

Notion AI 进阶【help me write】

对于Notion Ai来说,尽管一直在不断发展,但似乎人们还沉浸在Chat Gpt带来的狂欢,但如果你是国内用户,Notion AI所能提供的是远远大于限制过多的GPT,本篇讲一讲在Notion AI中help me write的使用 在这周我把Notion ai接入到Discord…

PostgresML - PostgreSQL的生成式AI扩展

PostgresML 是 PostgreSQL 的机器学习扩展,支持生成式AI,使你能够使用 SQL 查询对文本和表格数据执行训练和推理。 借助 PostgresML,你可以将机器学习模型无缝集成到你的 PostgreSQL 数据库中,并利用尖端算法的强大功能来高效地处…

【Python数据类型-集合】------- PYTHON基础14

内容目录 一、 集合1. 集合创建1.1. 创建集合1.2. 创建空集合 2. 集合基本操作2.1. add()添加新的元素 set1.add(element)2.2.remove()删除元素 set1.remove(element)2.3.discard()删除元素 set1.discard(element)2.4.clear()清空集合里的所有元素 set1.clear() 3. 集合与列表、…

介绍10款ChatGPT替代产品

ChatGPT 引领着聊天 AI 的世界,许多人已经开始在日常生活中使用它。OpenAI 的 GPT-3 语言模型是聊天机器人的基础,它使得用户能够通过回答问题与 AI 进行交互。 GPT-4 的引入为机器人提供了更强大的功能。然而,它也有一个明显的缺点&#xff…

09-HTML-表格标签(合并单元格)

标签描述<table>定义表格<caption>定义表格标题。<th>定义表格中的表头单元格。<tr>定义表格中的行。<td>定义表格中的单元。<thead>定义表格中的表头内容。<tbody>定义表格中的主体内容。<tfoot>定义表格中的表注内容&#x…

API数据接口可以从几个不同的角度来看待;

一.API数据接口可以从几个不同的角度来看待&#xff1a; 1. 技术角度&#xff1a;API数据接口是一种技术实现&#xff0c;通常是以HTTP协议或其他网络协议为基础&#xff0c;并采用特定的数据格式&#xff08;如JSON或XML&#xff09;来传递数据。 2. 业务角度&#xff1a;API数…

Ubuntu22.04安装PyTorch1.12.1 GPU版本

目录 一、电脑相关信息 1. 电脑显卡环境&#xff1a; 二、安装Pytorch1.12.1/cu116&#xff08;GPU版本&#xff09; 1. 准备&#xff1a;新建虚拟环境 2. 方式一&#xff1a;用pip在线安装torch1.12.1cu116、torchvision0.13.1cu116&#xff1a;&#xff08;在pytorch官网…