从 Composer 在 dataproc 集群上执行 bash 脚本

2024-01-26

我想在使用简单的 shell 脚本创建集群后将 jar 添加到特定位置的 dataproc 集群中。

创建 dataproc 集群后,我想自动执行此步骤以从 Composer 运行,下一步是执行 bash 脚本,该脚本会将 jar 添加到 data proc 集群。

您能否建议使用哪个气流运算符在 dataproc 集群上执行 bash 脚本?


要在主节点上运行简单的 shell 脚本,最简单的方法是使用pig sh https://pig.apache.org/docs/latest/cmds.html#shDataproc 作业,如下所示:

gcloud dataproc jobs submit pig --cluster ${CLUSTER} --execute 'sh echo hello world'

或使用pig fs https://pig.apache.org/docs/latest/cmds.html#fs直接复制jar文件:

gcloud dataproc jobs submit pig --cluster ${CLUSTER} --execute 'fs -cp gs://foo/my_jarfile.jar file:///tmp/localjar.jar'

这些 gcloud 命令的等效 Airflow 操作员设置将使用DataProcPig操作符 https://github.com/apache/airflow/blob/master/airflow/contrib/operators/dataproc_operator.py#L670query字符串参数

如果您需要将 jar 文件放置在所有节点上,最好只使用初始化动作 https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/init-actions在集群启动时复制 jarfiles:

#!/bin/bash
# copy-jars.sh

gsutil cp gs://foo/my-jarfile.jar /tmp/localjar.jar

如果您需要在集群部署后的某个时间动态确定将哪些 jar 文件复制到所有节点上,您可以采用这里描述的方法 https://stackoverflow.com/questions/55739463/cant-add-jars-pyspark-in-jupyter-of-google-dataproc/55859782#55859782使用初始化操作,连续监视某些 hdfs 目录以将 jarfile 复制到本地目录,然后每当您需要 jarfile 出现在所有节点上时,您只需提交一个pig fs将 JAR 文件从 GCS 放入 HDFS 的监视目录中。

通常,您不希望某些内容自动轮询 GCS 本身,因为 GCS 列表请求需要花钱,而轮询 Dataproc 集群的 HDFS 则不需要额外费用。

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

从 Composer 在 dataproc 集群上执行 bash 脚本 的相关文章

随机推荐

  • 如何打开没有菜单项的侧边栏?

    是否可以打开侧边栏而无需打开菜单并单击某个项目 我的意思是我们可以添加一个像按钮一样的菜单并在单击时打开侧边栏吗 我知道的最短的方法是将单个项目添加到菜单中 function onOpen e SpreadsheetApp getUi cr
  • 如何在 quill 编辑器中使用 v-model

    我用的是Vue 3 我以前用过这个 效果很好
  • mysql:信息架构上的访问被拒绝

    当我创建新用户或向现有用户授予权限时 出现此错误 ERROR 1045 28000 Access denied for user root localhost using password YES 对除 information schema
  • 迭代范围内的单元格时出现类型不匹配错误

    您好 我正在尝试在电子表格上运行以下 vb 代码 但在范围内出现数据类型不匹配的错误 我只是想锁定值为 0 的单元格 有些单元格的值为 NA 有什么想法吗 Sub Test Dim Cell As Range Set MyPlage Ran
  • Maven glassfish 嵌入式插件中的 JSP 热插拔

    我正在尝试设置嵌入式 glassfish maven 插件并且成功了 但是我无法使 jsp 文件热交换 这是我的配置
  • 10k 租户和多租户数据库设计 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在尝试为新的 Web 应用程序决定数据库设计 我们预计将有近 10 000 个租户 并且希望将他们的数据保存在单独的数据库中 如
  • Qt iOS 运行失败

    当我尝试在 iOS 模拟器上运行我的应用程序时 应用程序输出 I see Starting remote process Run ended 当我尝试在 iPhone 上运行它时 Issues I see xcodebuild failed
  • 如何在休眠中为自身实体添加@onetoone映射

    如何为自身实体添加一对一映射 就像这个例子一样 我想为 Person 本身建立父子关系 Entity Table name PERSON public class Person Id Column name personId private
  • 在 make 中“触及”目标是什么意思?

    例如 从 mingw32 make exe help 选项 t touch Touch targets instead of remaking them 它只是意味着更新文件修改时间 这样下次就不会认为这些文件是旧的
  • CSS - 在电脑上分屏但在移动设备上堆叠

    我试图将我的页面分成 4 个相等的部分 我想将左上角水平分成 2 个部分 我主要关心的是它在移动设备上的表现 我不希望它像在电脑上那样被分割 我希望它被堆叠起来 块在另一个上面 如图所示 我想过引导网格 但我做不到 到目前为止我所拥有的内容
  • 如何使用量角器+角度获取迭代器索引/键?

    通过中继器查找元素时有没有办法访问迭代器索引 键 protractor By repeater id cat in pets 在本例中 我希望访问猫的 id id 不是表中显示为值的列之一 它用于导航ng click goto pets c
  • SSL_connect 返回=1 errno=0 状态=SSLv3 读取服务器证书 B:证书验证失败

    我在用Authlogic 连接 https github com viatropos authlogic connect用于第三方登录 运行适当的迁移后 Twitter Google yahoo 登录似乎工作正常 但 facebook 登录
  • 为什么 Python 中对集合的处理不统一?

    Python 中集合和列表的处理方式不同 并且似乎没有统一的方法来处理这两者 例如 将一个项目添加到set是使用完成的add方法 并且对于list它是使用完成的append方法 我知道这背后有不同的语义 但也有共同的语义 并且通常与某些集合
  • 用于电子邮件的 JUnit 报告单页 XSLT

    我有一个 Junit 进程 每天晚上运行大量数据完整性测试 我希望它以格式良好的 HTML 电子邮件形式发送结果 问题是 JUnit 中内置的 HTML 格式化程序使用框架和外部样式表 因此它不适合电子邮件 普通格式化程序将结果埋在一堆原本
  • 未捕获的语法错误:计算时出现意外的标识符

    我有一些返回一个的代码Uncaught SyntaxError当我运行它但我不明白为什么 我尝试将其通过 JSHint 但无济于事 这是明显错误的代码 function compute expr x string var whatisx x
  • Java8计算地图中对象列表的平均值

    初始数据 public class Stats int passesNumber int tacklesNumber public Stats int passesNumber int tacklesNumber this passesNu
  • MongoDB:如何在 C# 中加载带有嵌套数组的集合?

    我有一个名为 服务器 的集合 其中包含以下文档 name West ip 123 123 123 123 channels name English port 1234 status 0 name Spanish port 1235 sta
  • 为什么带有空格的 cookie 值到达客户端时会带有引号?

    我是一名 NET 开发人员 开始涉足 Java 在 NET 中 我可以将 cookie 的值设置为其中包含空格的字符串 new HttpCookie myCookieName my value 当我在客户端 JavaScript 读取该值时
  • 批处理文件重复以前的工作程序

    我需要有关批处理脚本的帮助 它运行得很好 但后来当我想运行它时 它不断重复我之前显示的结果 例如 我上周执行了一个名为运行 echo 程序上周首先运行 的程序 当我今天尝试通过 echo 这是今天 运行它时 它运行并显示之前的结果 PS 代
  • 从 Composer 在 dataproc 集群上执行 bash 脚本

    我想在使用简单的 shell 脚本创建集群后将 jar 添加到特定位置的 dataproc 集群中 创建 dataproc 集群后 我想自动执行此步骤以从 Composer 运行 下一步是执行 bash 脚本 该脚本会将 jar 添加到 d