如何运行创建 Dataproc 集群、运行作业、从 Cloud Function 删除集群

2023-12-15

我想启动 Dataproc 作业来响应到达 GCS 存储桶中的日志文件。我也不想让持久集群保持运行,因为新的日志文件每天只到达几次,并且大多数时间都是空闲的。


此处提供了本教程的较新版本: https://cloud.google.com/dataproc/docs/tutorials/workflow-function

我可以用工作流程模板 API为我管理集群生命周期。使用 Dataproc 工作流程,我无需轮询要创建的集群、创建的作业,或执行任何错误处理。

这是我的云功能。设置Cloud Storage bucket触发Finalize/Create event:

索引.js:

exports.startWorkflow = (event, callback) => {

  const {
    google
  } = require('googleapis');

  const region = 'global'
  const zone = 'us-central1-a'
  const clusterName = 'my-cluster'

  const file = event.data;
  console.log("Event: ", file);

  if (!file.name) {
    throw "Skipped processing file!";
  }

  const queryFileUri = "gs://" + file.bucket + "/" + file.name

  console.log("Creating auth client: ");
  google.auth.getApplicationDefault(
    (err, authClient, projectId) => {
      if (authClient.createScopedRequired && authClient.createScopedRequired()) {
        authClient = authClient.createScoped([
          'https://www.googleapis.com/auth/cloud-platform',
          'https://www.googleapis.com/auth/userinfo.email'
        ]);
      }

      const request = {
        parent: "projects/" + projectId + "/regions/" + region,
        resource: {
          "placement": {
            "managedCluster": {
              "clusterName": clusterName,
              "config": {
                "gceClusterConfig": {
                  "zoneUri": zone, // Can be omitted if using regional endpoint (like us-central1-a, not global)
                }
              }
            }
          },
          "jobs": [{
            "stepId": "step1",
            "pigJob": {
              "queryFileUri": queryFileUri,
            },
            "prerequisiteStepIds": [],
          }]
        }
      };

      const dataproc = google.dataproc({
        version: 'v1beta2',
        auth: authClient
      });
      dataproc.projects.regions.workflowTemplates.instantiateInline(
        request, (err, result) => {
          if (err) {
            throw err;
          }
          console.log(result);
          callback();
        });
    });
};

确保将要执行的功能设置为startWorkflow.

包.json:

{
  "name": "dataproc-workflow",
  "version": "1.0.0",
  "dependencies":{ "googleapis": "30.0.0"}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何运行创建 Dataproc 集群、运行作业、从 Cloud Function 删除集群 的相关文章

随机推荐

  • JW Player:跨浏览器“显示:无”播放器行为

    有没有一种简单 预先的方法可以让 FF 和 IE 同等对待隐藏的 JW 玩家 我将播放器的不同实例动态放置在 jQuery 生成的选项卡中 实际上 切换选项卡会隐藏每个玩家的父 div 在 FireFox 中 选项卡切换和伴随的 显示 更改
  • MVVM Light 上缺少 EventToCommand

    这个有用的类似乎从最新的 MVVM Light 版本中消失了 知道为什么或如何解决它吗 我正在使用 MvvmLightLibs 5 0 1 0 肯定存在于 MvvmLightLibs 4 1 27 0 上 所以这个问题与一个无关Window
  • 全球位置输入自动完成

    我正在寻找一个插件来创建一个智能位置表单字段 该字段具有建议的自动完成功能 我无法找到任何合适的东西 Google 地理编码本身太不可靠 而且它不是为此设计的 所以我构建了自己的 我认为 2011 年还没有这样的开源全局位置输入插件 这太疯
  • 无法在 Powershell 中比较两个变量

    我正在使用 Powershell 并且尝试将驱动器的可用空间与我想要放入驱动器的文件大小进行比较 但它似乎不喜欢这种比较 并且出现以下错误 我想知道每个值前面的名称是否导致了问题 如果是这种情况 有没有办法在保留名称的同时正确比较这些值 或
  • 刷新控制器使用的页面时,控制器中使用的 $rootscope 值将被覆盖

    在我的 AngularJS 页面中 我使用 AngularJS 的 rootscope 对象将全局数据传递到另一个控制器 在我的控制器中 我成功地捕获了存储在 rootscope 对象中的值 并且该值正确填充 并且我正在标签控件中使用该值
  • Sublime Text/代码无故解析错误,隐藏字符

    我多年来一直遇到这个问题 但不像今天那么频繁 这促使我一劳永逸地问这个问题 有时 今天对于几乎所有逻辑 我的简单 PHP 代码会因解析错误而失败 有时 PHP 是正确的 但通常不会出现错误 并且当再次编写完全相同的代码时 它可以正常工作而不
  • 使用正则表达式 C# 解析字幕文件

    我需要找到数字 输入和输出时间码点以及文本的所有行 9 00 09 48 347 gt 00 09 52 818 Let s see what else she s got Yea ha ha 10 00 09 56 108 gt 00 0
  • 使用 Linq to SQL SELECT @@DBTS

    如何使用 Linq to SQL 使用 C 检索 DBTS 这是我正在尝试的 IEnumerable 结果 db ExecuteQuery SELECT DBTS 但是 这会导致 类型 System Data Linq Binary 必须声
  • 每个程序员都应该阅读的最有影响力的书是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 Locked 这个问题及其
  • 根据一列聚合具有多列的数据框[重复]

    这个问题在这里已经有答案了 我想从许多列的数据框中进行聚合 即sum 数百列由一列组成 无需指定每个列名称 一些示例数据 names lt floor runif 20 1 5 sample lt cbind names for i in
  • 如何运行 sql 脚本以便从 java 代码更新 Derby 架构?

    我们客户端的 derby 数据库安装有不同的架构版本 例如 Customer1 的数据库架构版本为 4 1 5 0240 Customer2 的数据库架构版本为 4 0 1 0330 这个想法是在安装新软件时将这些架构更新为实际版本 有几个
  • 如何使 pandas HDFStore 的“放置”操作更快

    我正在尝试使用 pandas hdf5 构建 ETL 工具包 我的计划是 从 mysql 中提取表到 DataFrame 将此 DataFrame 放入 HDFStore 中 但是当我执行步骤 2 时 我发现将数据帧放入 h5 文件会花费太
  • PHP无法读取cookie?

    我喜欢用 PHP 来查看 cookiePHPSID27258STATUS与值一起存在COMPLETE如果是的话就做事 在谷歌浏览器 在选项中 我可以看到这个cookie存在并且具有值COMPLETE 如果我运行这个 PHP 脚本 我会得到
  • 用按钮触摸移动?

    是否可以使用touchesMoved用按钮代替功能UIImageViews Yes 在你的 h 文件中 IBOutlet UIButton aButton 在你的 m 文件中 void touchesMoved NSSet touches
  • 如何禁用“始终在关联应用程序中打开这些类型的链接”Chrome 警报

    在 Chrome 中执行 Protractor 测试时 我收到类似于以下内容的警报 我想接受它以便能够继续执行测试 首先我尝试过browser switchTo alert accept 但没有成功 然后我用谷歌搜索了一下 找到了以下解决方
  • 如果有延迟,用 BufferingTargetWrapper 包装的 NLog FileTarget 无法写入日志

    我可能偶然发现了 NLog 的问题 但我想我应该先在这里检查一下答案 为了重现这个问题 我克隆了 NLog 源 这样我就可以添加延迟来导致问题 在 Visual Studio 中打开后 我添加了一个控制台应用程序 该应用程序引用 NLog
  • 使用 LDAP/Java 启用 Active Directory 用户

    我正在尝试使用 LDAP 和 Java 1 4 在 Active Directory 中启用用户 但是我不断收到以下错误 java lang NullPointerException 位于 com sun jndi ldap LdapCtx
  • FBSDKGraphRequest 响应问题 - 未获得分数

    我正在使用以下代码来获取我的 Facebook 朋友的游戏得分 void GetFriendScore NSMutableDictionary params NSMutableDictionary dictionaryWithObjects
  • 是什么导致我的 UI 在关闭串行端口时冻结?

    我正在开发与串行端口相关的应用程序 使用时DataReceived的事件SerialPort我需要用接收到的字节更新文本框 private void Connection DataReceived object sender SerialD
  • 如何运行创建 Dataproc 集群、运行作业、从 Cloud Function 删除集群

    我想启动 Dataproc 作业来响应到达 GCS 存储桶中的日志文件 我也不想让持久集群保持运行 因为新的日志文件每天只到达几次 并且大多数时间都是空闲的 此处提供了本教程的较新版本 https cloud google com data