我已经使用 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 中查找的操作。环境。以下是您需要采取的步骤:
- 创建一个调用管道代码的 Servlet 和 deploy it to App Engine .
- 创建一个 cron.yaml 文件来配置 App Engine Cron 服务来调用 Servlet 的 URL 定期进行。
- Deploy应用程序的 cron 作业 引擎。
云函数
与 Cloud Functions您编写 Node.js 函数来响应许多不同的事件/触发器,例如 Pub/Sub 消息、云存储更改和 HTTP 调用。因此,您可以编写一个执行数据流管道的云函数,该管道可以使用任何这些云函数触发器来启动数据流管道。
- 为您的 Cloud Function 创建一个 Node.js 模块并从中调用您的 jar(例如使用spawn)。您可以使用 this link 中提供的模块作为基础。请注意,您需要提供自己的 Java 运行时文件夹以及 Cloud Function 代码。确保您的 Node.js 模块命名为 index.js 并且所有 Java 依赖项都位于同一文件夹中。
- Deploy你的职能。
- 安排触发。最可靠的方法是再次使用 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/