luigi 学习】的更多相关文章

--local-scheduler的方式只适用于开发调试阶段,当你真正要把程序部署到一个产品时,我们推荐使用luigid服务. 使用luigid服务不但能提供锁服务(防止一个任务被多个进程重复执行),并且还提供了一个友好的可视界面. 一.如何使用luigid 1.1执行luigid 首先你在一个终端执行: luigid 那么luigid服务就会启动 1.2执行top artist任务 PYTHONPATH=- 注意:这里将--local-scheduler参数去掉了,这个脚本会连接schedul…
luigi的执行和触发模型非常简单. 一.luigi的执行模型 当你执行一个luigi的工作流的时候,worker调度所有的task,并且执行task在一个单独的进程中. 这种scheme最大的好处是容易调试,因为所有的task都在单独的进程中运行.你可以使用crontab的方式来触发他.…
--local-scheduler一般用在开发阶段,这在一个产品中是不建议这样使用的.使用中央调度器有两个目的: 保证两个相同的task不会同时运行两次 提供一个可视化的界面 注意:中央调度器并不会帮助你执行任何任务或者帮助你使得你的任务更加并行. 一.luigid serevr 1.1运行luigid server在后台进程 luigid --background --pidfile /usr/local/luigi/pid/pid_file --logdir /usr/local/luigi…
最简单去运行一个luigi task的方式是通过luigi命令行工具. 示例代码: # my_module.py, available in your sys.path import luigi class MyTask(luigi.Task): x = luigi.IntParameter() y = luigi.IntParameter(default=45) def run(self): print self.x + self.y 在命令行上运行: (my_python_env)[root…
parameter就好比是一个task的构造方法.luigi要求你在类的scope上定义parameter. 如下面就是一个定义parameter的例子: class DailyReport(luigi.contrib.hadoop.JobTask): date = luigi.DateParameter(default=datetime.date.today()) # ... 对于上述的parameter你可以使用这样的方式来初始化: DailyReport(datetime.date(201…
task是代码执行的地方.task通过target互相依赖. 下面是一个典型的task的大纲视图. 一.Task.requires requires方法用来指定本task的依赖的其他task对象,依赖的task对象甚至可以是同一个class的对象,下面是一个例子: def requires(self): return OtherTask(self.date), DailyReport(self.date - datetime.timedelta(1)) 上述的DailyReport task依赖…
luigi提供了两个基本单元来构造一个工作流,这两个基本单元分别是Task和Target.这两个单元都是抽象类,我们实现他们中的某些方法就可以了.除了这两个基本单元,还有一个重要的概念是Prameter,它可以控制task的运行方式. 一.target target对应的是磁盘上的一个文件,或者是HDFS上的一个文件,或者数据库中一条记录.一个自定义的target只需要实现exists方法,如果文件存在那么返回true,如果不存在则返回false. 实际上,自定义一个Target类的概率是很小的…
一.luigi配置文件的加载顺序 /etc/luigi/client.cfg luigi.cfg LUIGI_CONFIG_PATH环境变量 二.配置文件分节 配置文件被分为了多个section,每一个控制着不同方面的配置 三.利用配置文件来给参数赋值 如果你有这样的一个类: class DailyReport(luigi.contrib.hadoop.JobTask): date = luigi.DateParameter(default=datetime.date.today()) # ..…
一.AggregateArtistsHadoop class AggregateArtistsHadoop(luigi.contrib.hadoop.JobTask): date_interval = luigi.DateIntervalParameter() def output(self): return luigi.contrib.hdfs.HdfsTarget("data/artist_streams_%s.tsv" % self.date_interval) def requ…
一.luigi介绍 luigi是基于python语言的,可帮助建立复杂流式批处理任务管理系统.这些批处理作业典型的有hadoop job,数据库数据的导入与导出,或者是机器学习算法等等. luigi的github:https://github.com/spotify/luigi 目前已经有一些抽象层次较低的数据处理工具,比如hive,pig,cascading等.luigi并不是要取代他们,而是帮助你管理这些作业,luigi的task可以是一个hive查询,java写的hadoop作业,一个sc…