是否可以为Dataflow工作人员提供自定义程序包? 我想从计算中发现一个Debian打包的二进制文件。
编辑:要明确,包配置足够复杂,只能将文件捆绑在--filesToStage中是不可行的。 解决方案应该包括在某些时候安装Debian软件包。
答案 0 :(得分:4)
这不是Dataflow明确支持的。但是,下面是一些关于如何实现这一目标的建议。请记住,将来可能会破坏这项服务的事情可能会发生变化。
有两个不同的问题:
对于第一个问题,您可以使用--filesToStage并指定debian包的路径。这将导致程序包上载到GCS,然后在启动时下载到工作程序。如果使用此选项,则必须在--filesToStage的值中包含所有jar,因为如果您明确设置--filesToStage,则默认情况下不会包含它们。
在java worker上传入的任何文件--filesToStage将在以下目录(或子目录)中提供
/var/opt/google/dataflow
或
/dataflow/packages
您需要检查这两个位置,以确保找到该文件。
我们不保证这些目录将来不会发生变化。这些只是今天使用的位置。
要解决第二个问题,您可以覆盖StartBundle中的DoFn。从这里开始,您可以在/ dataflow / packages中找到命令行并安装debian软件包。
可能有多个DoFn并行运行的实例,因此如果两个进程同时尝试安装您的程序包,您可能会遇到争用问题。我不确定debian软件包系统是否可以处理这个问题,或者你的代码中是否需要这样做。
这种方法的一个略微变体是不使用--filesToStage将包分发给您的工作者,而是将代码添加到您的startBundle以从某个位置获取它。