Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud dataflow 使用Apache Beam/Dataflow上的流式数据进行内部连接_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Google cloud dataflow 使用Apache Beam/Dataflow上的流式数据进行内部连接

Google cloud dataflow 使用Apache Beam/Dataflow上的流式数据进行内部连接,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,我知道可以在ApacheBeam上对数据执行内部联接,但我找不到解决我的具体问题的答案(这比仅仅联接数据要复杂一些) 我正在从两个PCollection接收数据,我需要合并它们。例如: 这是我从PCollection A收到的信息: { "key": "key1", "score": ... } { "key": "key2", "score": ... } { "k

我知道可以在ApacheBeam上对数据执行内部联接,但我找不到解决我的具体问题的答案(这比仅仅联接数据要复杂一些)

我正在从两个PCollection接收数据,我需要合并它们。例如:

这是我从PCollection A收到的信息:

{ "key": "key1", "score": ... }
{ "key": "key2", "score": ... }
{ "key": "key3", "score": ... }
...
这是我从PCollection B收到的信息:

{ "id": ..., "key": "key1", "otherScore": ... }
{ "id": ..., "key": "key1", "otherScore": ... }
{ "id": ..., "key": "key2", "otherScore": ... }
{ "id": ..., "key": "key3", "otherScore": ... }
{ "id": ..., "key": "key3", "otherScore": ... }
{ "id": ..., "key": "key3", "otherScore": ... }
...
我想通过“键”连接这两个流。我的输出如下:

{ "id": ..., "key": "key1", "score": ..., "otherScore": ... }
{ "id": ..., "key": "key1", "score": ..., "otherScore": ... }
{ "id": ..., "key": "key2", "score": ..., "otherScore": ... }
{ "id": ..., "key": "key3", "score": ..., "otherScore": ... }
{ "id": ..., "key": "key3", "score": ..., "otherScore": ... }
{ "id": ..., "key": "key3", "score": ..., "otherScore": ... }
...
这与您的1-1加入有点不同,因为:

  • PCollection A中的条目可以用于多个PCollection B。实际上,我希望将这些值存储大约4小时,然后将其删除。这种“缓存”非常重要

  • PCollection B中的条目只能使用一次。它们可以停留大约10分钟,等待合并,然后可以丢弃


在Apache Beam上可以这样做吗?如果有人能为我指出正确的方向,我将不胜感激。

您是否能够将窗口添加到管道中,或者您是否希望在不使用窗口的情况下加入两个流?如果打开该窗口,则只需执行
GroupByKey
操作。否则,您可能需要依赖state,我可以添加一个窗口,但不能超过1h(这与4h缓存的要求背道而驰)。您认为解决方案是不使用数据流吗?为什么不能创建一个大于1小时的窗口?滑动窗口似乎适合我,我不太熟悉梁中的窗口。窗口是否会删除管道的“实时”方面,并使其每X小时输出一次?