【问题标题】:Airflow Dataproc operator to run shell scriptsAirflow Dataproc 操作员运行 shell 脚本
【发布时间】:2023-04-10 23:22:01
【问题描述】:

是否有任何直接的方法可以将 shell 脚本运行到 dataproc 集群中。目前我可以通过 pysparkoperator 运行 shell(它调用另一个 python 文件,然后这个 python 文件调用 shell 脚本)。我已经搜索了很多链接,但到目前为止还没有找到任何直接的方法。

如果有人能告诉我最简单的方法,那对我真的很有帮助。

【问题讨论】:

  • 我不知道direct的方式,但如果你不知道,你可以1)找到正在运行的Dataproc主节点名称2)gcloud compute ssh到那个实例
  • 嗨,是的,使用此选项我们可以手动处理 shell 脚本,但我的目标是通过气流安排此脚本。如果你能帮助我更多,请告诉我。提前致谢
  • 全部使用 PythonOperator,您可以使用 googleapiclient.discovery.build('dataproc', 'v1', credentials=GoogleCredentials.get_application_default()) 获取正在运行的数据过程,然后通过传递正确的实例名称使用 subprocess.Popengcloud compute ssh

标签: python shell airflow google-cloud-dataproc apache-airflow


【解决方案1】:

带有sh 操作员[1] 的PIG 作业:gcloud dataproc jobs submit pig ... -e 'sh ls'

但是我很好奇最终目标是什么?为什么要运行 shell 脚本?如果您的意图是执行一次性集群设置,那么您应该使用初始化操作 [2]。

[1]https://pig.apache.org/docs/r0.9.1/cmds.html#sh

[2]https://cloud.google.com/dataproc/docs/concepts/init-actions

【讨论】:

    【解决方案2】:

    您可以使用气流 BashOperator 并使用以下命令:

    gcloud compute ssh user@server --zone your_cluster_zone \
      --command='Your Command'
    

    示例:

        BashCommand= BashOperator(
        task_id='BashCommand',
        bash_command='gcloud compute ssh user@server --zone your_cluster_zone --command='Your Command',
        dag=dag)
    

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2012-04-05
      相关资源
      最近更新 更多