数据治理之元数据管理:Apache Atlas

Apache Atlas 是一个开源的数据治理和元数据管理框架 ‌,主要帮企业管好数据资产目录、分类和血缘关系,让数据更透明、更安全 。‌‌‌ Apache Atlas‌ 官网

一、Apache Atlas的作用

  • 元数据管理:Apache Atlas 能够追踪和管理各种数据源(如:HBase、Hive、Sqoop、Storm、Kafka)的元数据信息,包括数据实体、关系和属性等(数据库表结构、字段信息、数据血缘关系、数据的业务含义等),从而帮助用户更好的理解数据资产。

  • 数据分类:对数据进行分类和打标签,以便更好地组织和检索数据。例如,可以将数据分为客户数据、销售数据、财务数据等不同类别,并为每个数据资产添加相应的标签,如"敏感数据""高价值数据"等。这样可以方便数据使用者快速找到所需的数据,同时也有助于企业实施数据安全和合规策略。

  • 数据血缘:以直观的图形化界面展示数据从产生到消费的完整链路,是数据溯源、影响分析和问题排查的核心工具。

  • 搜索与发现:提供强大的搜索和浏览功能,用户可以通过关键字搜索快速找到相关的数据资产。同时,Atlas 还提供了可视化的界面,用户可以直观地浏览数据资产的元数据信息、血缘关系等。

  • 安全与策略 :提供细粒度的元数据访问控制。最重要的是,它能与Apache Ranger深度集成,实现基于数据分类的动态数据屏蔽(如对"国家ID"列自动脱敏)。

二、Apache Atlas的架构

Atlas的组件可以分为以下四大类:核心层(Core)集成层(Integration)元数据源(Metadata Sources)应用层(Applications)

1. 核心层(Core)------ 存储与索引的基石

这是Atlas的大脑和存储中枢,负责元数据的建模、持久化和内部流转。

1.1 类型系统(Type System)

类型系统是Atlas的元数据建模引擎 ,本质上是一套面向大数据资产的"面向对象建模语言"。它负责定义元数据的结构、类型、关系及约束,是整个Atlas存储、检索和分析数据的元模型基石。

Atlas允许用户为要管理的元数据对象定义模型。该模型由称为"类型(Type)"的定义构成。"类型"的实例称为"实体(Entity)",代表实际被管理的元数据对象。类型系统组件让用户能定义和管理这些类型与实体。Atlas开箱即管的所有元数据对象(如Hive表)都基于类型建模并表现为实体。

  • **Type(类型):**是元数据对象定义的模板(相当于Class类),用于定义属性结构。

    • **五大元类型(Metatype):**是Atlas内置的类型分类体系,包括:

      • 原始类型(Primitive)booleanbyteshortintlongfloatdoublebigintegerbigdecimalstringdate

      • 枚举类型(Enum):限定值列表。

      • 集合类型(Collection)arraymap

      • 复合类型(Composite)Entity(存独立对象Struct(存嵌入属性Classification(动态打标签且可沿血缘传播 )、Relationship(定义实体间双向关联,支撑图谱导航)。

  • Entity(实体): 是Type(类型)的实例(相当于Object对象),用于存储具体元数据值,通过GUID全局唯一标识,实现具体资产的管理。

  • 属性(Attributes): 属性在EntityStructClassificationRelationship等元类型内部定义。属性除了名称和元类型值外,还有更多特性。

    属性名 类型 含义
    name string 属性名称
    typeName string 属性的元类型名称(原始/集合/复合类型)
    isOptional boolean 是否可选(false表示必须赋值)
    isIndexable boolean 是否创建索引(支持高效查询)
    isUnique boolean 是否唯一(创建唯一索引,类似主键)
    cardinality enum 基数:SINGLE(单值)、LIST(列表)、SET(集合)
  • 系统预定义类型(System Specific Types) **:**Atlas预置了一些系统类型,用于提供一致的建模基类和约定。
系统类型 继承自 核心属性 用途说明
Referenceable qualifiedName(唯一限定名) 所有可通过唯一属性qualifiedName搜索的实体的基类。
Asset Referenceable name(必填)、descriptionowner 为实体提供名称、描述、所有者等通用元数据,方便UI和应用程序做约定式展示。
Infrastructure Asset (继承上述) 作为基础设施元数据(如集群、主机)的通用父类型。
DataSet Referenceable (继承) 代表存储数据 的类型。hive_tablehbase_table等都继承自它。这类类型通常拥有"模式(Schema)"属性(如columns),其实例会参与数据转换,形成数据血缘(Lineage)
Process Asset inputs(array<DataSet>)、outputs(array<DataSet>) 代表数据转换操作 (如ETL任务)。通过inputsoutputs属性,Process类型的实例完整记录了数据集的血缘演变过程。

一句话贯穿:通过Type定义模板,用Entity填充数据,借Classification打标和Relationship连线,再依托DataSet/Process基类自动形成血缘,最终靠属性约束保证质量。 这就是Atlas类型系统的全部精髓。


1.2 图引擎(Graph Engine)

Atlas的图引擎 是其核心层的数据持久化与关系处理中间件。它扮演"翻译官"的角色,负责将类型系统定义的逻辑模型(Type/Entity/Relationship)转换为底层的图结构(顶点/边)进行物理存储,并执行所有元数据的检索与遍历操作。

  1. 支撑复杂血缘(杀手锏) :专为数据血缘影响分析而生。当查询一张表的上下游链路时,图引擎利用图遍历算法(而非传统SQL的递归JOIN),能在毫秒级返回多层依赖关系,这是它区别于普通元数据库的根本原因。

  2. 高效关系导航:支持双向关联查询(如上查来源、下查影响),完美适配元数据网状结构的天然特性。

  3. 统一索引管理:统一管理属性索引(全文/精确)和图索引,保障搜索性能。

层级 技术选型(默认) 核心职责
图数据库引擎(API层) JanusGraph 作为抽象层,对外提供Gremlin图遍历语言接口,管理顶点、边和属性的生命周期。
持久化存储层(存数据) HBase(主流)或 RocksDB 将图结构(顶点ID、边ID、属性键值)以二进制形式落盘存储
外部索引层(建索引) Solr(主流)或 Elasticsearch 构建双重索引: ① 精确/全文属性索引(快速根据名称搜索表); ② 地理/数值范围索引,大幅提升复杂查询效率。

1.3 元数据导入/导出(Ingest / Export)

Ingest(导入)Export(导出) 是Atlas的**"元数据高速公路"** 。前者负责将外部元数据写入 Atlas,后者负责将Atlas内部的元数据变更广播 出去。两者共同构建了Atlas与外部生态双向实时同步的通道。

模式 Ingest(导入)实现 Export(导出)实现
同步(API) 应用调用 REST API 直接提交元数据(适合一次性批量导入或管理界面操作)。 无(导出不支持同步拉取,均为异步推送)。
异步(消息) 数据源(如Hive)的 Hook(钩子) 捕获变更,发送至 Kafka,Atlas订阅消费后写入。 Atlas内部发生变更后,主动将事件写入 Kafka 特定Topic,下游应用(如Ranger、审计系统)订阅消费,实现实时响应。
🏗️ 底层架构(数据流全景)
  1. Hook(埋点插件) :嵌入在Hive/Spark等数据源进程中的拦截器。异步非阻塞设计,即使Atlas宕机也不影响源端业务,事件会暂存Kafka。

  2. 消息总线(Kafka) :充当解耦缓冲层

    • ATLAS_HOOK Topic:接入层,防止数据洪峰冲垮Atlas。

    • ATLAS_ENTITIES Topic:出口层,保证事件不丢失,支持多下游订阅。

  3. 线程池(内部处理) :Atlas Server内部有专门的Consumer线程池 拉取Kafka消息,经过图引擎 持久化后,再触发Notification派发线程将事件发出。


2. 集成层(Integration)------ 与外部世界的通道

集成层(Integration) 是Atlas对外提供的**"交互通道"** ,本质上是同步与异步双模接口 。它的作用是让外部系统能够管理元数据 (增删改查),也能感知元数据变更 ,实现与大数据生态的无缝对接

对比维度 API(RESTful API) 消息接口(Messaging - Kafka)
通信模式 同步(请求-响应) 异步(发布-订阅)
交互方向 双向(外部↔Atlas) 双向(外部→Atlas Hook ;Atlas→外部 通知
核心作用 直接操作:创建/更新/删除类型与实体;执行元数据检索与发现(UI后台主力)。 事件驱动:实时捕获数据源变更(Ingest);广播元数据变更事件给下游(Export)。
使用场景 Atlas管理界面、运维脚本、一次性批量导入。 Hive/Spark Hook 发送元数据;Ranger消费事件做动态权限;审计系统订阅。
一致性 强一致性(操作立即生效并返回结果)。 最终一致性(延迟秒级,通过Kafka缓冲解耦)。
可靠性保障 依赖HTTP重试机制。 Kafka持久化保证消息不丢失,Atlas重启后可回溯消费。

3. 元数据源(Metadata Sources)------ 开箱即用的连接器

元数据源 是Atlas预置的**"生态适配器"** ,即针对各类大数据组件内置的元数据模型(TypeDefs) + 采集通道(Hook/Bridge) 。其作用是从这些外部系统中自动、实时或批量地捕获元数据,灌入Atlas核心存储,实现"零代码"接入。

  • 采集方式(两种模式)
模式 实现机制 适用场景
实时钩子(Hook) 嵌入在数据源进程中的拦截器,捕获变更后发往Kafka。 Hive/Spark等,要求秒级感知表结构变更。
批量桥接(Bridge) 独立运行的周期性同步任务,通过JDBC或API拉取元数据。 传统关系型数据库、云服务,容忍分钟级延迟。
  • 元数据源(分类清单)
分类 具体组件 采集方式 说明
Hadoop生态(经典) HiveHBaseKafkaStormSqoop Hook(实时) 开箱即管,官方首批支持的经典组件。
计算引擎(现代) Apache Spark(含SQL/Streaming) Hook(实时) 捕获表、列、ETL作业及血缘。
数据湖/云服务(扩展) AWS GlueGCP BigQueryAzure Data Lake Bridge(批量) 通过桥接器周期性同步云上数据目录。
传统数据库(延伸) MySQLPostgreSQLOracle 等(通过JDBC) Bridge(批量) 通过第三方桥接工具(如Apache Nifi)或自定义脚本接入。

注:每个数据源由两部分构成 :① 类型模型 (如hive_table定义);② 采集组件(Hook或Bridge)。


4. 应用层(Applications)------ 治理价值落地的舞台

应用层 是Atlas的**"价值出口"** ,即元数据最终被消费和落地的场景层。它的作用是将底层存储的"技术元数据"转化为实际业务价值,满足数据治理、安全合规、资产发现等企业级需求。

4.1 Atlas管理界面(Admin UI)

"人"看数据的窗口 :提供搜索与类SQL查询,实现资产快速查找;核心是数据血缘可视化 (展示表和ETL任务的上下游流转);支持业务注释(为字段添加业务含义,打通技术与业务隔阂)。

4.2 基于标签的策略(Tag Based Policies - 与Apache Ranger集成)

"机器"执行安全管控 :消费Atlas的元数据变更事件(通过Kafka)。安全员可在Ranger中定义规则(如"打上PII标签的列,普通用户查询时脱敏"),实现动态数据屏蔽与行/列过滤 ,且策略随标签自动传播(下游派生表自动继承脱敏规则),无需修改业务SQL。

工作流示例 :数据管理员在Atlas中给"身份证号"列打上PII分类 -> Atlas通过Kafka通知Ranger -> 安全管理员在Ranger中配置一条策略:"凡属于PII的分类,普通用户查询时返回***" -> 生效后,下游所有组件(Hive、HBase、Spark SQL)查询该列时自动脱敏,全程无需修改业务SQL代码,实现了"安全策略与数据位置解耦"。

5. 架构全景总结图(概念理解)

  1. 存储底座(核心层) :JanusGraph存关系,Solr建索引,Kafka传事件, Hbase存储元数据

  2. 接入窗口(集成层):同步查用API,异步稳调用Kafka。

  3. 生态触手(元数据源):Hook实时抓取Hive/Spark的数据变更。

  4. 价值出口(应用层):UI给人看血缘,Ranger给机器做动态安全控制。

三、实践:自动导入Hive的元数据(待验证)

基于 Metastore 事件监听器

📋 前置条件

  • Atlas 服务已部署并正常运行(含 Kafka、HBase、Solr)。

  • Hive 版本 ≥ 3.0.0 (因为要用到 transactional.event.listeners 特性)。

  • Atlas 与 Hive 集群网络互通,能访问同一 Kafka 集群。


第 1 步:部署 Atlas Hive Hook 插件(JAR 包)

Atlas 自带了 Hive 的钩子实现,需要将其放到 Hive 的类路径下。

bash 复制代码
# 进入 Atlas 安装目录的 hook 文件夹
cd /opt/apache-atlas-2.2.0/hook/hive

# 将 Atlas 的 Hive Hook JAR 包和依赖复制到 Hive 的 lib 目录
cp atlas-hive-hook-2.2.0.jar /opt/hive-3.1.3/lib/
cp ../common/atlas-common-2.2.0.jar /opt/hive-3.1.3/lib/
# 同时需要把 Atlas 依赖的图库、日志库一并复制(具体文件见下文注意点)

注意 :为了避免 jar 包冲突,建议通过设置环境变量 HIVE_AUX_JARS_PATH 的方式加载,而不是直接拷贝到 lib,因为直接拷贝可能覆盖 Hive 原有包。推荐做法:

bash 复制代码
export HIVE_AUX_JARS_PATH=/opt/apache-atlas-2.2.0/hook/hive/*:/opt/apache-atlas-2.2.0/hook/common/*

第 2 步:配置 Hive Metastore(核心)

修改 $HIVE_HOME/conf/hive-site.xml,添加以下属性:

XML 复制代码
<!-- 1. 启用 Metastore 事务性事件监听器(核心配置) -->
<property>
    <name>hive.metastore.transactional.event.listeners</name>
    <value>org.apache.atlas.hive.hook.HiveMetastoreHookImpl</value>
</dependency>

<!-- 2. 允许 Metastore 接收外部 API 通知(默认 false,必须改为 true) -->
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>

<!-- 3. 指定 Atlas Hook 的配置文件路径(用于读取 Kafka 地址等) -->
<property>
    <name>atlas.hook.hive.conf.dir</name>
    <value>/opt/apache-atlas-2.2.0/conf/</value>
</property>

<!-- 4. 开启 Metastore 事件通知持久化(避免漏记 DDL) -->
<property>
    <name>hive.metastore.notifications.add.thrift.objects</name>
    <value>true</value>
</property>

<!-- 5. 可选:Hook 处理超时时间,防止影响 Hive 正常执行 -->
<property>
    <name>atlas.hook.hive.synchronous</name>
    <value>false</value>   <!-- 异步执行,不影响 Hive 性能 -->
</property>

第 3 步:配置 Atlas 服务器端(接收端)

修改 $ATLAS_HOME/conf/atlas-application.properties,确保以下 Kafka 消费配置正确(通常默认已配好,只需确认):

css 复制代码
# 指定监听的 Kafka Topic(默认即为 ATLAS_HOOK)
atlas.kafka.topic.input=ATLAS_HOOK

# 消费者组 ID(唯一标识,多个 Atlas 实例需区分)
atlas.kafka.consumer.group.id=atlas-group

# Kafka 集群地址(务必与 Hive 侧访问的是同一个)
atlas.kafka.bootstrap.servers=node1:9092,node2:9092,node3:9092

# 自动创建 Topic 分区数(默认即可)
atlas.kafka.topic.input.partitions=1

第 4 步:复制 Atlas 全局配置文件到 Hive 节点

为了让 Hive 端的 Hook 能读取到 Kafka 地址,需要把 Atlas 的配置文件放到 Hive 节点上(已在第 2 步通过 atlas.hook.hive.conf.dir 指定):

bash 复制代码
# 在 Hive 节点创建目录(如 /usr/hdp/current/atlas-client/conf)
mkdir -p /usr/hdp/current/atlas-client/conf

# 复制 Atlas 服务的核心配置文件
cp $ATLAS_HOME/conf/atlas-application.properties /usr/hdp/current/atlas-client/conf/
cp $ATLAS_HOME/conf/atlas-log4j.xml /usr/hdp/current/atlas-client/conf/

第 5 步:重启 Hive Metastore 服务

配置改动需要重启 Hive Metastore 才能生效。

bash 复制代码
# 根据你的集群管理方式(以 Ambari 或原生命令为例)
# 原生命令:
ps -ef | grep HiveMetastore  # 找到 PID,先 kill
nohup hive --service metastore &  # 重启

# 若使用 Ambari/CM,直接在 Web 界面点击 Restart Hive Metastore
复制代码
注意:Atlas 服务不需要重启,因为它一直在监听 Kafka Topic,只要 Kafka 地址正确即可。

第 6 步:验证测试

  1. 执行一条 Hive DDL

    sql 复制代码
    CREATE DATABASE test_atlas;
    CREATE TABLE test_atlas.employee (id int, name string);
    INSERT INTO test_atlas.employee VALUES (1, 'zhang');
  2. 查看 Atlas UI

    • 搜索 employee 表,应能看到该表实体。

    • 点击该表,查看数据血缘(Lineage) ,应能看到 insert 操作产生的 Process 节点。

    • 查看 test_atlas 数据库,应能正确显示所属关系。

  3. 检查日志(排错)

    • 查看 Hive Metastore 日志:$HIVE_HOME/logs/hive.log,搜索 Atlas 字样,确认无报错。

    • 查看 Atlas Server 日志:$ATLAS_HOME/logs/application.log,确认消费消息正常。


⚙️ 备用方案:传统 Hive Hook(适用于 Hive 1.x/2.x)

如果 Hive 版本低于 3.0,无法使用 Metastore 监听器,则采用传统方案,在 hive-site.xml 中配置:

XML 复制代码
<property>
    <name>hive.exec.post.hooks</name>
    <value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

缺点 :只能捕获通过 hive CLI 或 Beeline 提交的 SQL,无法感知其他引擎(如 Spark)通过 Metastore 直接创建的表。


⚠️ 常见踩坑点

问题现象 可能原因 解决方案
Atlas 界面查不到表 Hook 未加载,或 Kafka 消息未发送。 检查 hive-site.xml 中监听器类名是否拼写正确(HiveMetastoreHookImplatlas-hive-hook 包中)。
血缘显示不完整 INSERT 语句中的表别名或 CTE(公用表表达式)解析失败。 升级 Atlas 版本或调整 SQL 写法(避免过于复杂的嵌套子查询)。
Hive 启动报 ClassNotFound Atlas Hook 依赖的 jar 包缺失(如 Jackson、Guava 版本冲突)。 采用 HIVE_AUX_JARS_PATH 方式加载,避免污染 Hive 原生 lib。
Kafka 消息堆积 Atlas 消费者处理太慢或未启动。 检查 Atlas 服务状态,适当增加 atlas.kafka.consumer.threads 并发数。

四、Atlas集成Ranger

1. 核心工作原理(逻辑流)

整个集成的本质是 "标签(Tag)从 Atlas 流向 Ranger"。执行逻辑分为 5 步:

  1. 打标(Tagging) :数据管理员在 Atlas UI 上,给某张 Hive 表的 id_card 列打上 PII(个人身份信息)分类标签。

  2. 通知(Notify) :Atlas 检测到实体变更,立即将"PII 标签已附加到某列"的增量事件,发送至 Kafka 的 ATLAS_ENTITIES Topic。

  3. 同步(Sync) :Ranger 的 TagSync 组件 (专门用来接 Atlas 消息的进程)持续消费该 Topic,收到事件后,将映射关系(PII -> 某集群某表某列)写入 Ranger 自己的 标签数据库(Tag DB)

  4. 策略(Policy) :安全管理员在 Ranger Admin UI 中,创建一条全局策略------"凡是拥有 PII 分类的列,对普通用户(user组)进行 数据脱敏 (显示为 ***)"。

  5. 执行(Enforce) :普通用户执行 SELECT * FROM table,SQL 经过 Hive Server 的 Ranger 插件 时,插件会拦截并询问 Ranger:"这个列有没有标签?有什么策略?"。Ranger 返回"脱敏指令",Hive 在返回结果前将真实数据替换为 ***

2. 底层架构与组件图谱

3. 详细配置操作步骤(生产环境标准流程)

第一步:Atlas 侧配置(开启 Tag 通知)

确保 Atlas 已经配置了 Ranger 所需的 Kafka 出口 Topic。在 atlas-application.properties 中检查:

css 复制代码
atlas.kafka.topic.output=ATLAS_ENTITIES  # 默认即为此
atlas.kafka.bootstrap.servers=xxx:9092   # 指向正确的Kafka

无需额外操作,只要 Atlas 处理元数据变更,就会自动向该 Topic 发消息。

第二步:Ranger 侧配置(部署 TagSync 服务)

Ranger 需要启动一个专门同步 Atlas 标签的服务------TagSync

  1. 连接配置 :修改 Ranger TagSync 的配置文件(通常在 install.propertiesranger-tagsync-site.xml):

    XML 复制代码
    <property>
      <name>ranger.tagsync.atlas.host</name>
      <value>http://atlas-host:21000</value>   <!-- Atlas 服务地址 -->
    </property>
    <property>
      <name>ranger.tagsync.kafka.bootstrap.servers</name>
      <value>kafka-host:9092</value>
    </property>
    <property>
      <name>ranger.tagsync.kafka.topic</name>
      <value>ATLAS_ENTITIES</value>            <!-- 消费 Atlas 主题 -->
    </property>
  2. 启动服务 :执行 ./start.sh 启动 Ranger TagSync 进程。它会持续运行,类似于一个守护线程。

第三步:在 Ranger Admin 中定义"标签策略"(核心操作)

这是集成后的关键动作,需要登录 Ranger Web UI:

  1. 创建服务(Service):确保已添加 Hive/Spark 等服务实例。

  2. 新建策略(Policy)

    • 选择 "Tag Based Policy"(基于标签的策略)。

    • 策略内容:指定标签(例如 PII)、指定用户/组(例如 analyst 组)、指定操作(select)。

    • 关键配置 :在 "Access Condition""Masking" 选项中,选择 动态脱敏(Dynamic Masking) ,例如设置为 MASK(显示前4位后4位)或 MASK_NULL(全展示为***)。

第四步:启用数据源端的 Ranger 插件(触发执行)

光有 Ranger 策略不够,执行 SQL 的 Hive Server 必须装上 Ranger 插件并启用标签策略感知。

  1. 在 Hive Server 的 ranger-hive-security.xml 中,增加:

    XML 复制代码
    <property>
      <name>ranger.plugin.hive.policy.rest.url</name>
      <value>http://ranger-admin:6080</value>
    </property>
    <property>
      <name>ranger.plugin.hive.enable.tag.policy</name>
      <value>true</value>   <!-- 关键:必须开启标签策略支持 -->
    </property>
  2. 重启 Hive Server 或相关组件,使插件重新加载配置。


4. 关键特性与高级玩法(为什么这么强大?)

  • 自动继承(Propagation Propagation) :这是最亮眼的功能。如果上游表 A 打上了 PII,通过 ETL 处理生成下游表 B,Atlas 血缘机制将 PII 标签自动传播给 B。Ranger 监听到 B 也有了该标签,无需人工操作,B 表自动套用相同的脱敏规则。

  • 行级过滤(Row-Level Filter) :不仅能脱敏列,还能过滤行。例如,给"地区"字段打上 Region_EU 标签,Ranger 策略可配置为"只有欧洲团队能看到欧洲数据行",实现精细化的数据隔离。

  • 多组件统一覆盖:一次策略定义,只要 Hive、HBase、Kafka、Spark SQL 都接了 Ranger 插件并开启了 Tag 策略,所有组件的访问行为都会被统一管控。


5. 避坑指南 & 注意事项

常见问题 原因分析 解决方案
Ranger 界面看不到新打的标签 TagSync 进程未启动,或 Kafka 网络不通。 检查 TagSync 日志,确认是否有 Atlas Tag Sync Success 日志。
SQL 执行未脱敏,数据依然可见 Hive 插件未启用 enable.tag.policy,或策略未下发至本地缓存。 检查 Hive 配置文件,并等待 1-2 分钟(Ranger 策略刷新有缓存间隔)。
延迟较大 标签从 Atlas 打标到 Ranger 生效需要经过 Kafka + TagSync 轮询。 默认有秒级延迟。如需秒级强一致性,需调整 TagSync 的拉取间隔参数(polling.interval),但会增加资源消耗。
标签爆炸 滥用标签传播,导致下游百万列都有标签,压垮 Ranger DB。 设置合理的 propagation 开关,避免无意义标签无限向下游传播。
相关推荐
行业研究员5 天前
腾讯位置服务核心功能与应用场景解析
apache·lbs·腾讯位置服务
SeaTunnel6 天前
Apache SeaTunnel 提交一个任务都经过了什么?
java·大数据·服务器·apache·etl·seatunnel
SelectDB9 天前
基于 Apache Doris 搭建 RAG 系统:从基础 RAG 到知识图谱增强的完整实现与选型指南
apache
SelectDB9 天前
SelectDB Enterprise 4.0.5:企业级实时分析与 AI 数据底座怎么选?安全合规配置指南
apache
隔窗听雨眠9 天前
80TB电商数据迁移实录:从PostgreSQL分析困境到Apache Doris架构突围
postgresql·架构·apache
lsh曙光9 天前
Apache服务
apache
Norris Huang11 天前
Icevue:为 Apache Iceberg REST Catalog 打造一个轻量、只读的可视化入口
apache
ajassi200012 天前
AI语音智能体开发日记(三)解决小程序配网中的蓝牙命名与MAC地址获取问题
ai·apache·ai编程
SelectDB技术团队12 天前
当 PostgreSQL 面临性能瓶颈:80TB 电商业务迁移至 Apache Doris 的实践思考
数据库·postgresql·apache
sbjdhjd12 天前
安全初级 | Upload 文件上传漏洞实操
android·经验分享·安全·网络安全·开源·php·apache