为了账号安全,请及时绑定邮箱和手机立即绑定

我可以强制我的数据流管道中的一个步骤是单线程的(并且在一台机器上)吗?

我可以强制我的数据流管道中的一个步骤是单线程的(并且在一台机器上)吗?

HUWWW 2023-05-17 16:58:45
我有一个管道,它获取文件的 URL,并为除标题之外的每一行下载这些生成的 BigQuery 表行。为避免重复下载,我想根据以前下载过的表格检查 URL,如果 URL 不在这个“历史”表中,则只继续存储该 URL。为此,我需要将历史记录存储在允许唯一值的数据库中,或者为此使用 BigQuery 可能更容易,但对表的访问必须严格串行。我可以强制单线程执行(在一台机器上)来满足我的部分管道吗?(在这一点之后,我的 100 个 URL/文件中的每一个都适合在单独的线程上处理;每个文件都会产生 10000-10000000 行,因此在这一点上进行限制几乎肯定不会产生性能问题。)
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

Beam 专为并行处理数据而设计,它会尝试明确阻止您进行同步或阻塞,除非使用一些内置原语,例如Combine。

听起来你想要的是一个过滤器,它只在第一次看到元素(你的 URL)时发出它。您或许可以为此使用内置的Distinct 转换。此运算符使用组合键按键(在本例中为您的 URL)对元素进行分组,然后仅在第一次看到每个键时发出它。


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信