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

从Cloud Composer运行java Google数据流作业

郭星文
2023-03-14

目前,我们正在库伯内特斯上使用自己安装的气流版本,但想法是在云作曲家上迁移。我们使用Airflow运行数据流作业,使用DataFlowJavaoperator的自定义版本(使用插件),因为我们需要执行java应用程序,而java应用程序不是在jar中自包含的。因此,我们基本上运行一个bash脚本,该脚本使用以下命令:

java -cp jar_folder/* MainClass

所有jar依赖项都存储在所有辅助角色之间的共享磁盘中,但是在Composer中缺少此功能,在该功能中,我们被迫使用云存储来共享作业二进制文件。问题是使用gcsfuse从指向GCS的目录运行java程序非常慢。

你有什么建议在Cloud Composer中实现这样的场景吗?

谢谢

共有1个答案

阎璞瑜
2023-03-14

Composer自动将放置在gs://{your bucket}/dagsgs://{your bucket}/plugins中的内容同步到本地Pod文件系统。我们希望那里只复制dag和插件源代码,但不阻止任何人存储其他二进制文件(尽管不建议这样做,因为您可能会超过磁盘容量,此时由于本地空间不足,工作流执行将受到影响)。

fyi-本地文件系统路径分别为:/home/airflow/gcs/dags/home/airflow/gcs/plugins

 类似资料:
  • 我们的Google Cloud数据流管道程序调用了一些动态链接到*的库。所以要运行它,我需要设置linux环境变量LD_LIBRARY_PATH。有一种方法可以做到这一点:https://groups.google.com/forum/#!主题/综合。java。程序员/LOu18 OWAVM,但我想知道是否有一种方法可以在执行管道之前使用一些运行shell脚本的作业来实现这一点?

  • 我有一个Google Cloud Dataflow作业,我正在使用以下命令字符串从IntelliJ IDEA运行该作业: 它从这里运行良好,我想把它部署到本地服务器上,以便在构建时自动运行。参数指定管道选项;在任何给定的构建中,我们都需要使用这个管道启动三个不同的作业,并且重新编译三次是很浪费的。所以我正在使用mvn包以以下方式生成一个jar文件: 问题是,当我通过项目目标目录中的Java-jar

  • 在我当前的架构中,多个数据流作业在不同阶段被触发,作为ABC框架的一部分,我需要捕获这些作业的作业id作为数据流管道中的审计指标,并在BigQuery中更新它。 如何使用JAVA从管道中获取数据流作业的运行id?有没有我可以使用的现有方法,或者我是否需要在管道中使用google cloud的客户端库?

  • 请查找以下数据流作业详细信息:作业ID:2017-10-17_22_03_20-14123260585966292858作业名称:limit-test-file12-1508302687176批次:批次开始时间:2017年10月18日上午10:33:21状态:取消...地区:us-central1 作业日志详细信息:2017-10-18(11:34:56)工作流失败。原因:(b2725d597b8

  • 我知道我可以用云函数和PubSub通知来完成每个写入的文件,但我更喜欢只在整个文件夹完成时这样做一次。 谢了!

  • 我试图从一个数据流作业中运行两个分离的管道,类似于下面的问题: 一个数据流作业中的并行管道 如果我们使用单个p.run()使用单个数据流作业运行两个分离的管道,如下所示: 我认为它将在一个数据流作业中启动两个独立的管道,但它会创建两个包吗?它会在两个不同的工人上运行吗?