Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Data Lake

数据湖会将任意格式的原始数据存储在低成本对象存储中,并在读取时应用架构。了解数据湖与数据仓库和湖仓的区别。

数据湖是一个集中式存储库,以数据的原始本机格式保存数据,涵盖数据库导出文件、JSON 日志,以及图像、视频、音频和文档;数据通常存储在低成本的云对象存储中,并且只有在读取数据时才应用结构。Pentaho 当时的首席技术官 James Dixon 于 2010 年创造了这个术语,用来对比数据集市——他把数据集市比作经过净化和包装的瓶装水——以及处于自然状态、可供许多用户取用的大量数据。由于无需预先建模,数据湖可以保留组织收集的所有数据,这很适合机器学习:明天模型所需的训练数据,往往是存储时还没人知道用途的原始数据。

数据湖的工作原理#

数据湖将存储与计算分离。文件存放在 Amazon S3、Google Cloud Storage 或 Azure Data Lake Storage 等对象存储中,Spark、Trino 或 Python 进程等引擎可直接读取这些文件,因此每个团队都能独立扩展自己的计算资源,而无需复制数据。表格数据通常以 Apache Parquet 等开放列式格式存储,而图像和视频仍以普通文件形式保存,通常旁边还会有 JSON 或 Parquet 清单文件,其中包含它们的元数据和标签。

大多数数据湖会按数据精炼程度划分区域,这种组织方式被 Databricks 称为奖章架构:原始(青铜)区域会原样保留数据,清洗(白银)区域存放经过验证和去重的数据,精选(黄金)区域则存放可用于报告或训练的表和数据集。AWS Glue Data Catalog、Hive Metastore 或 Unity Catalog 等元数据目录会记录每个数据集包含的内容、所有者以及有权读取它的人。如果数据湖没有目录和数据清洗,就会退化成“数据沼泽”:文件无人能找到、无法信任,也无法安全删除。

读取时应用架构#

数据湖会在读取数据时应用架构,这称为读取时应用架构。写入方可以在数据生成后立即写入,即使两个来源的字段不一致也没关系;读取方则可以自行决定所需的列和类型。以下示例写入两个字段不同的原始 JSON 文件,然后使用 Polars 按同一个架构读取它们:

import json
from pathlib import Path

import polars as pl

# 原始区域:两台摄像头以 JSON 行格式写入检测事件,每台摄像头使用各自的字段
Path("lake/raw").mkdir(parents=True, exist_ok=True)
Path("lake/raw/dock-1.jsonl").write_text(json.dumps({"label": "forklift", "conf": 0.91}))
Path("lake/raw/dock-2.jsonl").write_text(json.dumps({"label": "person", "conf": 0.62, "lux": 120}))

# 读取时应用架构:读取方在查询文件时选择列和类型
schema = {"label": pl.String, "conf": pl.Float32, "lux": pl.Int32}
events = pl.scan_ndjson("lake/raw/*.jsonl", schema=schema, include_file_paths="source")
print(events.collect())

结果包含两行,以及 label、conf、lux 和 source 这几列。第一台摄像头从未记录 lux,因此该列的值会返回为 null;source 则记录每一行来自哪个原始文件。另一个作业可以使用不同的架构读取相同的文件,而无需重写这些文件。

数据湖、数据仓库与湖仓的比较#

  • 数据仓库:以固定架构存储经过清洗的结构化表格,数据加载时必须符合该架构(写入时应用架构),通常还要经过提取、转换、加载(ETL)步骤。Snowflake、BigQuery 和 Redshift 等数据仓库可以快速处理 SQL 和商业智能查询,但对图像、文本及其他非结构化数据的支持不够灵活。
  • 数据湖:以低成本存储任意格式的数据,并在加载后转换数据(ELT),适合探索、数据挖掘和机器学习。普通数据湖文件不支持事务,因此并发写入方可能会让读取方读到只写入了一部分的结果。
  • 湖仓:通过 Apache Iceberg、Delta Lake 和 Apache Hudi 等开放表格式,为数据湖存储增加数据仓库功能,支持 ACID 事务、架构强制执行和回溯到表的早期版本。Databricks 的研究人员在 2021 年的一篇论文中介绍了这种架构。

机器学习中的数据湖#

对于计算机视觉团队,数据湖会保存每一帧摄像头画面、采集元数据、标注,以及已部署模型对这些画面所做的预测。自动驾驶汽车项目会上传车队的行驶日志,并从中挖掘罕见场景,例如雨夜中的行人,然后对这些场景进行标注并加入训练集。在医疗保健领域,集中存储在一个数据湖中的去标识化扫描图像和报告,可为医学图像分析模型提供数据。将生产环境中的预测结果送回数据湖以供审查和重新标注,可以形成数据飞轮;表快照或 DVC 等工具则能固定每个模型训练所用的确切数据版本。特征库和向量数据库通常构建在数据湖之上,用于提供从原始文件中提取的特征或嵌入。

Ultralytics Platform 可以将 Amazon S3、Google Cloud Storage 或 Azure Blob Storage 中的文件夹直接转换为训练数据集,无需上传副本:每次导入时,它都会就地索引最多 500,000 个对象,使用只读凭据,解析图像旁边的 YOLO .txt 标签文件,并根据文件夹名称分配训练集、验证集和测试集。每张索引图像都会固定到其对象版本,因此如果数据湖中的图像文件被覆盖,Platform 会安全地拒绝处理该图像。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来