You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Palantir Foundry上传大量PDF至MediaSet并解决事务超限问题

解决MediaSet批量PDF上传超限及Workshop适配问题

方案1:分块上传至单个MediaSet

原代码通过put_dataset_files一次性提交所有文件,触发了事务上传数量上限。修改为分批次上传,每批提交一次事务,避免超限:

from transforms.api import transform, Input
from transforms.mediasets import MediaSetOutput

@transform(
    output_mediaset=MediaSetOutput("<your path to mediaset>"),
    input_dataset=Input("<your path to dataset with raw files>")
)
def compute(input_dataset, output_mediaset):
    # 调整批次大小,建议从500开始测试,适配平台阈值
    BATCH_SIZE = 500
    file_list = list(input_dataset.files())
    
    for idx in range(0, len(file_list), BATCH_SIZE):
        batch = file_list[idx:idx+BATCH_SIZE]
        for file in batch:
            with input_dataset.filesystem().open(file.path, 'rb') as f:
                output_mediaset.put(file.path, f.read())
        # 每批上传后提交事务
        output_mediaset.commit()

这种方式保持单个MediaSet,完全兼容Workshop原生展示组件,无需前端调整。

方案2:拆分多MediaSet并适配Workshop

若分块上传仍受限,需拆分多个MediaSet时,可通过以下方式适配Workshop组件:

  • 统一命名规则:将拆分后的MediaSet按media_set_01、media_set_02等规则命名,便于批量调用。
  • 自定义聚合数据源:在Workshop中创建自定义数据源,通过脚本聚合所有MediaSet的文件:
    from transforms.mediasets import MediaSet
    
    def get_aggregated_files():
        media_paths = [
            "<path to media_set_01>",
            "<path to media_set_02>",
            # 列出所有拆分后的MediaSet路径
        ]
        all_files = []
        for path in media_paths:
            ms = MediaSet(path)
            all_files.extend(ms.files())
        return all_files
    
    将该数据源绑定到展示组件,即可加载所有拆分后的文件。
  • 使用多数据源组件:如果Workshop提供支持多MediaSet的展示组件(如分组文件浏览器),直接添加所有拆分后的MediaSet作为数据源即可。

优化提示

  • 提前清理无效PDF(损坏、空文件等),减少上传总量。
  • 若平台支持异步任务,可并行处理多批次上传,提升效率。

内容的提问来源于stack exchange,提问作者w1n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:47:35