如何在Google的Datalab中的cron作业中运行python程序?

时间:2016-03-10 02:21:01

标签: google-cloud-platform google-cloud-datalab

我是谷歌Datalab的新用户。我正在评估将Datalab用于生产数据管道的可能性。这意味着我希望能够将我的数据运算作为python程序运行,而不是作为交互式笔记本运行。 Datalab似乎是为交互式jupyter笔记本使用而设计的。但我记得在注册过程中看到一个屏幕,表示用户可以运行他们的整个数据管道。但是所有文档都只涉及交互式数据分析,没有提及程序化数据分析。我还想定期在cron作业中运行脚本。所以我正在寻找两件事: 1)如何在Datalab上运行python脚本? 2)如何在cronjob中定期运行它?

如果有人可以解决问题,那将是非常有帮助的。 提前谢谢!

2 个答案:

答案 0 :(得分:1)

这不是因为某些东西(技术上)可能成为一个好主意。

正如@Anthonios所说:

  

无法通过支持的方法使用额外的python模块自定义datalab。

通过组合其他(Google)云“构建基块”可以轻松实现您的要求。

示例1,用于流数据:

  • PubSub> DataFlow [1]>云存储或BigQuery> DataLab [2]

示例2,计划批处理:

  • 启动Docker容器(已计划)> Container运行您的处理脚本&完成后停止>云存储,云SQL或BigTable> DataLab [2]

绘制云架构时没有单一的解决方案,这完全取决于您的用例。

但是你当前的架构(虽然可能)似乎滥用了DataLab ......除非你有一个非常强有力的论据这样做......

  1. 正在制作的Python API

  2. 只有最终用户需要进行交互式数据分析时才需要DataLab。

答案 1 :(得分:0)

正如this stackoverflow帖子中所回答的那样,无法通过支持的方法使用额外的python模块自定义datalab。我的建议是将python脚本/ cron作业安装在datalab之外的另一个系统中,就像你想要运行的与datalab无关的任何python脚本一样。

非常长边注意: 如果你在datalab容器中运行程序,因为你想使用特定于datalab的gcp库,那么我建议以下不支持(但有创意)的设置对我有用。但是,它涉及运行本地datalab容器以及云数据集装箱容器。

  1. 安装datalab locally
  2. 将以下内容附加到
  3. 的文件Dockerfile.in文件中

    $REPO_DIR/containers/datalab/Dockerfile.in

    # Add a custom script which calls a custom program (python file)
    ADD mycustomprogram.sh /usr/local/bin/mycustomprogram.sh
    
    # Allow the script to be executed
    RUN chmod +x /usr/local/bin/mycustomprogram.sh
    
    1. 修改ENTRYPOINT中的$REPO_DIR/containers/datalab/run.sh变量以指向您的自定义脚本
    2. 现在您在datalab本地容器中运行了一个自定义脚本。

      使用本地设置,您仍然可以使用主机中的任何git客户端提交到同一个Google托管的git存储库。 gcloud有一个简单的提示,它将指导您完成克隆Google托管的git存储库的过程。

      只需运行gcloud init

      登录后,您应该会看到以下提示,询问您是否要使用Google托管的存储库:

      Do you want to use Google's source hosting (Y/n)?
      

      重要说明:在我们等待其他datalab自定义选项时,这只是一个临时工作。我更喜欢编辑云Dockerfile.in文件,而不是部署本地datalab实例,以便安装自定义python程序。