gpt4 book ai didi

google-cloud-dataflow - 如何获得两个 PCollection 的笛卡尔积

转载 作者:行者123 更新时间:2023-12-04 08:23:04 27 4
gpt4 key购买 nike

我对使用 Google Cloud Dataflow 很陌生。我想得到两个 PCollections 的笛卡尔积。例如,如果我有两个 PCollections (1, 2)("hello", "world") ,他们的笛卡尔积是 ((1, "hello"), (1, "world"), (2, "hello"), (2, "world")) .

任何想法我怎么能做到这一点?此外,由于笛卡尔乘积可能很大,我希望该解决方案能够懒惰地创建乘积,从而避免大量内存消耗。

谢谢!

最佳答案

一般来说,计算笛卡尔积会很昂贵。如果其中一个(或两个)集合适合内存,您可以使用 side-inputs将数据广播给所有 worker 。因此,对于您的示例,您将打开 PCollection<String>进入一个侧面输入,然后你会有一个 ParDo把它作为主要输入。对于主输入上的每个字符串,您可以访问具有 Iterable<String> 的侧输入。所有值中,您将输出对(或者您可以在此 DoFn 中选择仅输出排列的对)。

这将每次都重新迭代整个单词集——如果它适合内存,这应该没问题。如果每次都必须重新获取侧面输入数据,则可能会出现问题。

另一种方法是依靠改组和 key 。假设您想查找具有 3 个字母重叠的单词。你可以处理字典并产生一个PCollection由 3 个字母前缀键控的值。您也可以创建类似的 PCollection由 3 个字母的后缀键控。那么你可以GroupByKey (或 CoGroupByKey)。之后,对于每个 3 个字母的键,您都有所有以该为前缀和以该为后缀的单词。

关于google-cloud-dataflow - 如何获得两个 PCollection 的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35008721/

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