gpt4 book ai didi

java - 我可以强制数据流管道中的步骤为单线程(并且在单台计算机上)吗?

转载 作者:行者123 更新时间:2023-12-02 01:22:59 26 4
gpt4 key购买 nike

我有一个管道,它获取文件的 URL,并下载这些文件,为除 header 之外的每一行生成 BigQuery 表行。

为了避免重复下载,我想对照之前下载的 URL 表检查 URL,并且仅在该“历史记录”表中尚不存在该 URL 时才继续存储该 URL。

为此,我需要将历史记录存储在允许唯一值的数据库中,或者使用 BigQuery 也可能更容易,但对表的访问必须严格是串行的。

我可以强制执行单线程执行(在一台机器上)来满足仅部分管道的要求吗?

(在此之后,我的 100 个 URL/文件中的每一个都适合在单独的线程上处理;每个文件都会产生 10000-10000000 行,因此此时的限制几乎肯定不会产生性能问题。 )

最佳答案

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

听起来您想要的是一个过滤器,仅在第一次看到元素(您的 URL)时才发出该元素。您也许可以使用内置的 Distinct transform为了这。此运算符使用“Combine per-key”按键(在本例中为您的 URL)对元素进行分组,然后仅在第一次看到每个键时发出每个键。

关于java - 我可以强制数据流管道中的步骤为单线程(并且在单台计算机上)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com