我有一个管道,它获取文件的 URL,并为除标题之外的每一行下载这些生成的 BigQuery 表行。为避免重复下载,我想根据以前下载过的表格检查 URL,如果 URL 不在这个“历史”表中,则只继续存储该 URL。为此,我需要将历史记录存储在允许唯一值的数据库中,或者为此使用 BigQuery 可能更容易,但对表的访问必须严格串行。我可以强制单线程执行(在一台机器上)来满足我的部分管道吗?(在这一点之后,我的 100 个 URL/文件中的每一个都适合在单独的线程上处理;每个文件都会产生 10000-10000000 行,因此在这一点上进行限制几乎肯定不会产生性能问题。)
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
Beam 专为并行处理数据而设计,它会尝试明确阻止您进行同步或阻塞,除非使用一些内置原语,例如Combine。
听起来你想要的是一个过滤器,它只在第一次看到元素(你的 URL)时发出它。您或许可以为此使用内置的Distinct 转换。此运算符使用组合键按键(在本例中为您的 URL)对元素进行分组,然后仅在第一次看到每个键时发出它。
添加回答
举报
0/150
提交
取消