java - 在 eclipse 中自动化已经构建的 google 数据流管道

标签 java google-cloud-platform apache-beam

我已经使用 eclipse 在 java 中创建了一个数据流管道,我也将管道应用程序的 jar 文件保存在谷歌存储中。

我的要求是自动化整个过程,根据我的理解,这可以通过创建 cron 作业或创建模板来完成。谁能更好地理解如何做到这一点?

编辑:StarterPipeline.run() 中出现错误;
ArtifactServlet.java

package my.proj;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "ArtifactServlet", value = "/home/support/Ad-eff")
public class ArtifactServlet extends HttpServlet {

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
StarterPipeline.run();
}
}

最佳答案

This文章是关于如何使用 App Engine Cron 服务或云功能来安排数据流管道的很好的资料。它有点过时了,因为 Cloud Functions 在发布时还处于 alpha 阶段(现在处于 beta 阶段),但它应该仍然可以正常工作。

App Engine cron 作业

App Engine cron 作业通过 HTTP GET 调用定义为 App Engine 应用程序一部分的 URL。由于数据流管道执行要求,您将需要执行您在 flex 中查找的操作。环境。以下是您需要采取的步骤:

  1. 创建一个调用管道代码的 Servlet 和 deploy it to App Engine .
  2. 创建一个 cron.yaml 文件来配置 App Engine Cron 服务来调用 Servlet 的 URL 定期进行。
  3. Deploy应用程序的 cron 作业 引擎。

云函数

Cloud Functions您编写 Node.js 函数来响应许多不同的事件/触发器,例如 Pub/Sub 消息、云存储更改和 HTTP 调用。因此,您可以编写一个执行数据流管道的云函数,该管道可以使用任何这些云函数触发器来启动数据流管道。

  1. 为您的 Cloud Function 创建一个 Node.js 模块并从中调用您的 jar(例如使用spawn)。您可以使用 this link 中提供的模块作为基础。请注意,您需要提供自己的 Java 运行时文件夹以及 Cloud Function 代码。确保您的 Node.js 模块命名为 index.js 并且所有 Java 依赖项都位于同一文件夹中。
  2. Deploy你的职能。
  3. 安排触发。最可靠的方法是再次使用 App Engine cron 服务(可以是标准的或灵活的)。因此,您可以使用 Pub/Sub 触发器部署您的函数,从 shell 运行,例如: gcloud beta functions deploy myFunction --trigger-resource my-topic --trigger-event google.pubsub.topic.publish 。然后,您可以创建一个 Servlet,将空消息发布到 my-topic 。从那时起,您必须按照上面的 App Engine cron 作业解决方案描述中的步骤 2 和 3 进行操作。

关于java - 在 eclipse 中自动化已经构建的 google 数据流管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49607842/

相关文章:

java - jTable 移动到下一个指定列被中断

java - 如何使用 javax.persistence.OneToMany 在 hibernate 4 中设置级联更新?

python - Http 错误 : 400 Missing Required Parameter while using jobs. query() BQ API

apache-beam-io - 在 Apache Beam 中使用 PAssert containsInAnyOrder 比较对象

java - 将 "FFFF"转换为字节

java - 如何在 Builder 设计模式中实现方法的条件可见性?

Kubernetes(在 GKE 上)通过 NAT 进行特定 kube 服务的外部连接?

google-cloud-platform - 无法将 Google Cloud SQL 升级到第二代

java - Apache Beam - 无法使用 hadoop 文件系统 sdk 从 S3 读取文本文件

tensorflow - 导入错误 : No module named tensorflow_transform. 光束