
这份文档是Palantir Foundry数据集成体系的底层核心原理手册,完整定义了Foundry中数据的最小载体「数据集」的核心能力、底层实现逻辑与配套概念。它是之前讲解的Pipeline Builder、Code Repositories等所有上层数据应用的底层基础,所有数据开发、集成、治理操作都围绕这套核心规则运行。
以下是文档内容的逐模块深度拆解,同时结合你提供的数据集界面截图,完成原理与实操的对应讲解。
数据集是Foundry中数据从接入平台到映射至Ontology语义层的最基础、最核心的载体。 从底层实现来看,数据集本质是对底层兼容文件系统中存储的一组文件的逻辑包装层。它不直接存储文件,而是维护文件的元数据、逻辑映射与管理能力,将底层复杂的存储细节与上层应用解耦。
这是Foundry数据集区别于普通文件/文件夹的核心优势,也是企业级数据管理的基础:
Foundry数据集可统一存储和管理全类型数据,不同类型数据的处理规则有明确差异:
数据类型 | 定义与存储格式 | 核心处理规则 |
|---|---|---|
结构化(表格)数据 | 最常用类型,以Parquet等开源列式存储格式存储,配套描述列信息的元数据(Schema) | 必须绑定Schema,是数据流水线、分析的核心载体 |
非结构化数据 | 图像、视频、PDF、文档等文件,无固定结构 | 无关联Schema,仅做文件级管理,可配套元数据标签 |
半结构化数据 | XML、JSON等格式的文件,有嵌套结构但无固定表结构 | 不建议直接绑定Schema,官方推荐在下游数据变换中推断表格Schema,以提升性能与易用性 |
事务是Foundry实现「数据的Git」的核心底层机制,数据集的所有内容变更,都是通过事务实现的。用户在界面上看到的数据集,本质是「最新事务提交后形成的数据集视图」。
事务是对数据集底层文件的原子性修改操作,要么全部生效,要么全部不生效,不会出现中间状态。它完全类比Git中的提交(Commit),是Foundry数据版本控制的基础。
事务有3种核心状态,形成固定的流转流程:
事务的核心差异在于对数据集底层文件的修改方式,官方定义了4种类型,覆盖所有数据更新场景,也是批处理/增量管道的底层基础:
事务类型 | 核心规则 | 核心用途 | 关键注意事项 |
|---|---|---|---|
SNAPSHOT(快照) | 用全新的一组文件,完全替换数据集的当前视图 | 批处理管道的基础,全量更新场景 | 会重置整个数据集的视图,之前的所有事务历史仅保留在旧版本中 |
APPEND(追加) | 仅向数据集当前视图中添加新文件,绝对不能修改/覆盖现有文件 | 增量管道的基础,仅同步新增数据的场景 | 若尝试覆盖现有文件,事务提交会直接失败;仅处理新增数据可大幅提升管道效率 |
UPDATE(更新) | 可向数据集添加新文件,同时可覆盖/修改现有文件的内容 | 需修改历史数据的增量更新场景 | 是APPEND的超集,灵活性更高,但会增加增量管道的维护复杂度 |
DELETE(删除) | 从数据集当前视图中删除指定文件的引用 | 数据保留、合规清理场景 | 【重点】仅删除视图中的文件引用,不会从底层文件系统中删除物理文件;物理文件的清理需通过「保留策略」实现 |
文档中给出了标准事务历史示例,最终数据集视图的计算逻辑如下:
SNAPSHOT 写入文件A、B → 当前视图:[A, B]APPEND 新增文件C → 当前视图:[A, B, C]UPDATE 将文件A修改为A' → 当前视图:[A', B, C]DELETE 删除文件B → 当前视图:[A', C]SNAPSHOT 写入文件D → 当前视图:[D](快照完全重置了视图,之前的所有文件都不再生效)这是文档中重点强调的核心逻辑:
DELETE事务仅删除数据集视图中的文件引用,底层文件系统中的物理文件不会被删除;同时,ABORTED的事务、历史版本的事务对应的物理文件,都会一直保留在存储中,持续占用存储成本。
保留策略的核心作用,就是真正清理底层文件系统中不再需要的物理文件,实现两个核心目标:
你提供的截图,就是文档中提到的数据集保留策略查看页面,对应文档中「查看数据集的保留策略 [Beta]」章节,界面元素的完整解读如下:
Details标签页 → 左侧菜单栏Retention policies,和文档描述完全一致;DELETE_ABORTED_TRANSACTIONS是Foundry自带的系统级策略,作用是自动清理所有ABORTED状态事务对应的底层物理文件(中止的事务不会出现在数据集视图中,无业务价值,系统默认自动清理);Only show policies relevant to this branch开关,开启后仅显示当前数据集分支生效的保留策略,关闭后会显示全部分支的策略;分支是Foundry为数据集提供的并行版本管理与多人协作能力,完全类比Git的分支机制。 事务仅解决了数据集的单链路版本追溯问题,而分支解决了「多个用户同时对数据集做修改、实验,互不影响,不破坏主版本稳定性」的协作需求。
master),是生产环境的稳定版本;数据集视图,是某个时间点、某个分支下,数据集的有效文件集合。 我们在界面上打开数据集看到的行和列,本质就是该数据集当前分支、最新时间点的视图。历史视图,就是数据集的历史版本。
视图不是固定存储的,而是基于事务历史动态计算出来的,计算步骤完全固定:
SNAPSHOT事务;如果没有SNAPSHOT事务,则取数据集的最早事务;SNAPSHOT/APPEND:将事务中的所有文件添加到集合中;UPDATE:将事务中的文件添加到集合中,已存在的同名文件直接替换;DELETE:从集合中删除事务中指定的所有文件;SNAPSHOT事务会重置视图的计算起点,因此增量管道(无新SNAPSHOT,仅用APPEND/UPDATE/DELETE)的视图,始终基于最开始的SNAPSHOT累加计算;Schema是绑定在数据集视图上的元数据,核心作用是定义如何解析视图内的底层文件,包括两部分核心内容:
【重点提醒】Schema是绑定在视图上的,不是绑定在底层文件上的,因此无法保证底层文件一定符合指定的Schema。比如给CSV文件绑定了Parquet格式的Schema,读取数据集时会直接报错,这是开发中常见的踩坑点。
同时,Schema可以随时间变化,和数据集视图绑定,适配数据集的结构性变更(比如新增列、修改字段类型)。
Foundry数据集兼容Spark的全量数据类型,官方列出的核心支持类型如下:
BOOLEAN、BYTE、SHORT、INTEGER、LONG、FLOAT、DOUBLE、STRING、BINARY、DATE、TIMESTAMPDECIMAL,必须配置precision(精度,最大支持38)和scale(小数位数),官方推荐默认值为precision: 38、scale: 18MAP:需配置键类型mapKeyType和值类型mapValueTypeARRAY:需配置数组元素类型arraySubTypeSTRUCT:需配置嵌套字段的子Schema列表subSchemasParquet、Avro、文本格式(CSV、JSON等);options块中配置CSV文件的解析规则(分隔符、编码、首行是否为表头等);例子:(就像sql中的表结构 id INT, name STRING, address STRUCT<city STRING, zip INT>, create_time TIMESTAMP )shcema推断:
方案 | 核心优势 | 核心短板 | 唯一适用场景 |
|---|---|---|---|
下游变换时推断 Schema | 灵活性拉满、适配结构易变的场景、原始数据同步零开销 | 稳定性差、性能冗余、无法治理、协作困难 | 上游原始的、结构频繁变化的 JSON/XML 半结构化数据,仅用于原始接入层 |
提前绑定固定 Schema(Schema on Write) | 稳定性强、性能极致、可治理、可审计、协作顺畅 | 灵活性差、结构变更需要手动调整 | 数仓清洗层、汇总层、集市层,所有生产核心链路,结构化数据,需要复用的公共数据集 |
你把同步过来的 JSON/XML 文件,存成一个无模式的非结构化数据集。这个数据集不配置任何 Schema,Foundry 只把这些 JSON 当成普通文件管理,不做任何提前解析、不做任何格式校验。上游同步新文件的时候,只是把文件存进来,没有任何额外开销,速度极快,也不会因为文件结构变化而同步失败。
当你需要用这个数据的时候,在 Pipeline Builder(或 Code Repositories)里,把这个无模式的原始数据集作为输入源,然后在下游的变换步骤里完成 Schema 推断:
from_json函数、Python 的 json 解析函数),让系统自动扫描 JSON 文件的内容,识别出里面的字段、嵌套结构、数据类型,自动生成对应的 Schema(这个自动识别生成 Schema 的过程,就是Schema 推断);文档中明确了Foundry的存储架构核心规则: 数据集跟踪的文件,并不存储在Foundry平台本身。Foundry仅维护「文件在Foundry中的逻辑路径」与「文件在底层支持文件系统中的物理路径」之间的映射关系。
底层支持文件系统必须兼容Hadoop FileSystem(HDFS)接口,常见的部署方式为:
所有数据集的底层物理文件,都存储在该支持文件系统的基础目录下的文件夹层级中,Foundry本身不做物理文件存储,实现了存算分离的架构。
其他数据库处理:不能直接作为底层文件导入
这是官方推荐的、也是唯一的 SQL 数据库数据接入方式,完全对应你之前学的「数据连接」应用。整个过程分为 3 步,和之前的概念完全打通:
在 Foundry 的「数据连接」应用里,配置 SQL 数据库的连接信息:
在「数据连接」里配置同步任务,把 SQL 数据库里的表 / 视图数据,同步到 Foundry 中:
举个例子:你同步 MySQL 里的user表到 Foundry,会自动生成一个名为raw_user的结构化数据集,底层是 Parquet 文件,Schema 自动映射为id INT、name STRING、create_time TIMESTAMP(和 MySQL 表结构完全对应)。
同步生成的结构化数据集,就可以直接用了:
除了从 SQL 数据库同步数据到 Foundry,你也可以通过「数据连接」,把 Foundry 里加工好的数据集,写回到 SQL 数据库中,供业务系统调用。

你提供的数据集预览界面,完整覆盖了文档中的所有核心概念,界面元素的对应关系如下:
界面元素 | 对应文档中的核心概念 | 核心作用 |
|---|---|---|
顶部Preview标签 | 数据集视图 | 查看当前分支最新视图的数据集明细数据 |
顶部History标签 | 事务 | 查看数据集的完整事务历史,可回溯历史版本、查看事务类型与详情 |
顶部Details标签 | 数据集元数据全量管理 | 包含About、Schema、Files、Retention policies等子菜单,管理数据集的所有元数据 |
左侧Schema菜单 | 模式(Schema) | 查看、编辑当前视图的Schema,配置字段类型、解析规则 |
左侧Files菜单 | 数据集底层文件 | 查看当前视图对应的底层物理文件列表 |
左侧Retention policies菜单 | 保留策略 | 查看、配置数据集的底层文件清理规则 |
顶部Health标签 | 数据健康 | 查看数据集的健康检查结果,对应之前讲解的「数据健康」应用 |
顶部Compare标签 | 分支/视图对比 | 对比不同分支、不同历史版本的数据集差异 |
右上角Build按钮 | 事务、构建应用 | 触发数据集的构建,生成新的事务,更新数据集视图 |
右上角Explore pipeline按钮 | 数据沿袭 | 跳转到数据集的上下游流水线,查看数据全链路血缘 |
文档中定义的所有核心概念,共同构成了Foundry企业级数据管理的完整底层体系,和之前讲解的上层应用形成了完美的闭环:
SNAPSHOT/APPEND事务生成初始数据集;原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。