-
static lance.LanceDataset.commit(base_uri: str | Path | LanceDataset, 操作: LanceOperation.BaseOperation | 事务, blobs_op: LanceOperation.BaseOperation | None =
None, read_version: int | None =None, commit_lock: CommitLock | None =None, storage_options: dict[str, str] | None =None, enable_v2_manifest_paths: bool | None =None, 分离: bool | None =False, max_retries: int =20) LanceDataset 创建数据集的新版本
此方法是一个高级方法,允许用户描述对数据文件所做的更改。当使用Lance应用更改时(例如使用
LanceDataset或write_dataset()),则不需要此方法。它当前的目的是允许在分布式环境中进行更改,其中没有单一进程完成所有工作。例如,分布式批量更新或分布式批量修改操作。
一旦完成所有更改,可以调用此方法通过更新数据集清单使更改生效。
警告
这是一个高级API,不提供与其他API相同级别的验证。例如,调用者有责任确保片段对模式有效。
- Parameters:
- base_uri : str, Path, or LanceDataset¶
数据集的基础URI,或者数据集对象本身。使用数据集对象可能更高效,因为它可以复用文件元数据缓存。
- operation : BaseOperation¶
应用于数据集的操作。这描述了已进行的更改。可用的操作请参见
LanceOperation。- read_version : int, optional¶
作为变更基础的数据集版本。 覆盖或恢复操作不需要此版本。
- commit_lock : CommitLock, optional¶
自定义提交锁。仅当您的对象存储不支持原子提交时才需要。详情请参阅用户指南。
- storage_options : optional, dict¶
针对特定存储连接的额外选项。这用于存储连接参数,如凭证、端点等。
- enable_v2_manifest_paths : bool, optional¶
如果为True,且这是一个新数据集,则使用新的V2清单路径。 这些路径能更高效地在对象存储上打开包含多个版本的数据集。如果数据集已存在,此参数将不起作用。要迁移现有数据集,请改用
migrate_manifest_paths_v2()方法。默认为False。警告: 启用此选项将使旧版Lance(0.17.0之前版本)无法读取该数据集。- detached : bool, optional¶
如果为True,则该提交不会成为数据集谱系的一部分。它将永远不会显示为最新数据集,未来唯一查看它的方式是通过指定版本号检出。该版本将是一个随机版本号,仅在分离提交中保持唯一。调用方应将其存储在某处,因为未来将无法通过其他方式获取它。
- max_retries : int¶
提交数据集时执行的最大重试次数。
- Returns:
Lance数据集的新版本。
- Return type:
示例
使用
LanceOperation.Overwrite操作创建新数据集:>>> import lance >>> import pyarrow as pa >>> tab1 = pa.table({"a": [1, 2], "b": ["a", "b"]}) >>> tab2 = pa.table({"a": [3, 4], "b": ["c", "d"]}) >>> fragment1 = lance.fragment.LanceFragment.create("example", tab1) >>> fragment2 = lance.fragment.LanceFragment.create("example", tab2) >>> fragments = [fragment1, fragment2] >>> operation = lance.LanceOperation.Overwrite(tab1.schema, fragments) >>> dataset = lance.LanceDataset.commit("example", operation) >>> dataset.to_table().to_pandas() a b 0 1 a 1 2 b 2 3 c 3 4 d