谷歌数据流在 Windows 之间共享资源

Posted

技术标签:

【中文标题】谷歌数据流在 Windows 之间共享资源【英文标题】:Google Dataflow Sharing Resources Between Windows 【发布时间】:2017-04-10 20:50:24 【问题描述】:

我目前正在构建一个谷歌数据流管道,该管道在运行时写入多个大查询表。我目前面临的问题是,我需要重新使用大查询服务实例、表信息等资源(我不想每次都重新创建这些资源)但我无法将它们缓存在有效的方式。

目前我正在使用一个简单的工厂来缓存它们(使用静态并发哈希图)。管道似乎没有从缓存中挑选那些(实际上它做了几次,但大多数都是重新创建的)。

我看到了一些解决固定大小会话窗口的方法,但如果有的话,我需要更简单的解决方案。

那么,对于我目前面临的问题,是否有任何最佳做法或解决方案。 有没有办法在windows之间共享资源?

【问题讨论】:

不清楚(至少对我来说)你在问什么。可以分享一下你的代码吗? @GrahamPolley 我们必须创建自己的流式 bigquery 编写器。这位作家的启动成本很高。我们希望在窗口之间缓存 writer 的各个方面以减少开销。 @GrahamPolley 我很乐意详细说明。目前,我正在处理数以千万计的记录,其中有一个 ID 字段,这是我要在运行时创建的大查询表(其中大约有 3,00,000 个唯一 ID)。因此,每当我查询这些表的信息时,我都想缓存它们,以便减少 API 调用开销。所以我的问题是如何让这些资源为数据流管道窗口共享,它目前没有从缓存中提取这些信息,它的重新创建(我希望这些资源在不同的窗口之间共享)? 【参考方案1】:

实际上,我放错了日志信息,导致结果反转(我的错)。但是静态工厂与管道作业分开的解决方案似乎解决了资源共享问题。希望这对任何有类似问题的人有所帮助:)

【讨论】:

以上是关于谷歌数据流在 Windows 之间共享资源的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS:为啥人们更喜欢工厂在控制器之间共享数据[重复]

Windows 进程和 WSL Linux 进程之间的共享内存

使用 Angular2 中的服务在组件之间共享数据

设置共享,实现Linux和Windows之间的共享

Windows和linux的文件共享

怎么在Ubuntu和Windows之间共享文件