当前位置: 首页 > 知识库问答 >
问题:

如何在GCP上用Apache Beam Dataflow手动将可执行文件复制到工作人员

徐高懿
2023-03-14

对Beam和GCP来说有点新。根据本文档,并使用Beam“子进程”示例,我一直在开发一个运行C二进制文件的简单Java管道。它在使用directRunner时运行良好,我现在正试图让它在云中运行。在gs buckets中暂存文件时,我得到的错误是:“不能运行程序”gs://mybucketname/tmp/grid_working_files/echo“:error=2,No throw file或directory”,这是有意义的,因为我想您不能直接在云存储中执行?我现在遇到的问题是如何将可执行文件移到工人身上。该文件指出:

当您使用本机Apache Beam语言(Java或Python)时,Beam SDK ;会自动将所有所需的代码移到workers。但是,当调用外部代码时,需要手动移动代码。要移动代码,请执行以下操作:

  1. 将编译后的外部代码以及版本控制信息存储在云存储中。
  2. 在 ;@setup ;方法中,创建一个synchronized块以检查代码文件在本地资源上是否可用。您可以在第一个线程结束时使用静态变量确认可用性,而不是实现物理检查。
  3. 如果该文件不可用,请使用云存储客户端库将该文件从云存储桶拉到本地工作器。推荐的方法是为此任务使用Beam ;Filesystems ;类。
  4. 移动文件后,确认代码文件上的执行位已设置。
  5. 在生产系统中,检查二进制文件的哈希值,以确保文件已正确复制。

我已经查看了FileSystems类,我想我理解了它,但我不知道需要将文件复制到哪里。是否存在工作人员使用的已知目录或文件路径?我在用数据流运行器。

共有1个答案

璩俊雅
2023-03-14

您可以将文件复制到workers本地文件系统中的任何位置,例如,您可以使用tempfile模块创建一个新的空临时目录,在运行之前将可执行文件复制到该目录中。

使用自定义容器也可能是一个很好的解决方案。

 类似资料:
  • 在我的计算机上,该文件具有以下权限: 我还尝试使用复制此文件,但这采用了一种绑定模式,该模式只提供或。

  • 问题内容: 我有一个包含两个简单的Java swing文件的程序。 如何为程序制作可执行的jar文件? 问题答案: jar文件只是包含Java文件集合的文件。为了使jar文件可执行,你需要指定 Class在jar文件中的位置。示例代码如下。 编译你的类。要制作一个jar,你还需要创建一个清单文件()。例如, 将编译后的输出类文件(JarExample.class,JarExample $ 1.cl

  • 问题内容: 一直在玩cython。通常使用Python进行编程,但前世曾使用C。我不知道如何制作一个独立的可执行文件。 我已经下载了cython,并可以创建一个.pyx文件(这是一个带有.pyx扩展名的普通Python文件),可以使用以下命令在Python Shell中执行:import pyximport; pyximport.install() 我可以使用以下命令在命令行中生成.c文件:cyt

  • 我正在使用JPackage(OpenJDK 15.0.1)为Windows制作一个可移植的可执行文件。我尝试了下面的命令,但我双击了生成的exe文件,显示了安装程序窗口。它似乎不是可移植的可执行文件,而只是安装程序。 有什么办法可以用JPackage制作一个不用安装就可以使用的可执行文件?

  • 问题内容: 我想做一个默认情况下django不允许的操作。 我正在编写命令(通过运行),以便在Django的我自己编写的文件存储中将给定的目录结构导入真实文件系统中。 我认为,这是我的相关代码: 回溯是: 该完整的模型可以在GitHub上找到。在目前完整的命令是gist.github.com可用。 如果你不想检查模型,则该类的属性为FileField。 我想会发生此问题,因为我只是“链接”到找到的

  • 我想为我用JavaFX2.0制作的项目制作一个可执行文件。有人能帮我吗?