【问题标题】:how to run a python script after running a scala spark app运行scala spark应用程序后如何运行python脚本
【发布时间】:2019-01-10 05:01:10
【问题描述】:

我想在运行 spark scala 应用程序之后运行 python 脚本。

我试过了

30 00 * * *  spark scala job command && python script2.py

但它不运行 python 脚本

【问题讨论】:

  • 你使用 OS cron 吗?
  • @RomeoNinov 是的 ubuntu 操作系统

标签: python-3.x cron scheduling


【解决方案1】:

首先,您的 cron 行有错误。你需要有 3 个*,而不是 4 个

30 0 * * * ...

cron 的下一个好习惯是创建将运行命令的 shell 脚本。并在此脚本中添加您的来源.bashrc 或/和.bash_profile 以将您的环境变量设置为与您登录操作系统时相同。 一个示例脚本如下所示:

#!/bin/bash
. /path/to/your/home/directory/.bashrc
# also you can try
# . /path/to/your/home/directory/.bash_profile
spark scala job command >/tmp/logfile 
retcode=$?
if [ "$errcode -eq 0 ]
then python script2.py
fi

关于最后一行,明智的做法是拆分它并深入检查第一个命令是否成功完成执行。

【讨论】:

  • 4 * 只是一个输入错误,我的 scala 脚本在问题中使用上述命令运行,但 python 脚本在 scala 完成后没有运行
  • bashrc中的时间我要提一下?
  • @experiment,“在 bashrc 中提及时间”是什么意思?时间在 cron 记录中定义
  • 您在上面的几个 cmets 中提到了。您应该获取此文件以加载您的环境变量、PATH 等
  • 请给出详细的解决方案,我是新手,无法通过上述解决方案进行选择
【解决方案2】:

无论您的 spark-submit 是否成功运行,您都不会使用“$?”得到答案。在 shell 中作为状态。要获取 Spark 作业的状态,您需要运行

yarn application -status <application id of the spark job> 

根据您运行 if [ $condition ] 的结果 希望有帮助

【讨论】:

  • 感谢您的反馈,但是为什么我的 python 脚本在 scala 脚本完成后不起作用?
  • 由于 shell 命令在 if 条件中期望 0 或 1 值,因为变量值 .spark submit i 在集群上运行而失败,并且您在 spark-submit 后获得的输出通常为 1 用于各种原因。这就是为什么即使您的 spark-submit 成功,您的 python 脚本也没有运行。检查状态的最佳方法是我共享的 yarn 命令,然后运行 ​​Python 脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2013-08-09
  • 2017-01-01
  • 2017-03-09
  • 2011-03-16
  • 1970-01-01
  • 2020-10-26
相关资源
最近更新 更多