gpt4 book ai didi

python - 使用 Luigi python 运行 Hadoop jar

转载 作者:可可西里 更新时间:2023-11-01 14:22:27 27 4
gpt4 key购买 nike

我需要使用 Luigi 运行 Hadoop jar 作业来自 python 。我搜索并找到了在 Luigi 中编写 mapper 和 reducer 的示例,但没有找到直接运行 Hadoop jar 的示例。

我需要运行一个直接编译的 Hadoop jar。我该怎么做?

最佳答案

您需要使用 luigi.contrib.hadoop_jar包(code)。

特别是,您需要扩展 HadoopJarJobTask .例如,像这样:

from luigi.contrib.hadoop_jar import HadoopJarJobTask
from luigi.contrib.hdfs.target import HdfsTarget

class TextExtractorTask(HadoopJarJobTask):
def output(self):
return HdfsTarget('data/processed/')

def jar(self):
return 'jobfile.jar'

def main(self):
return 'com.ololo.HadoopJob'

def args(self):
return ['--param1', '1', '--param2', '2']

您还可以将使用 maven 构建的 jar 文件包含到工作流中:

import luigi
from luigi.contrib.hadoop_jar import HadoopJarJobTask
from luigi.contrib.hdfs.target import HdfsTarget
from luigi.file import LocalTarget

import subprocess
import os

class BuildJobTask(luigi.Task):
def output(self):
return LocalTarget('target/jobfile.jar')

def run(self):
subprocess.call(['mvn', 'clean', 'package', '-DskipTests'])

class YourHadoopTask(HadoopJarJobTask):
def output(self):
return HdfsTarget('data/processed/')

def jar(self):
return self.input().fn

def main(self):
return 'com.ololo.HadoopJob'

def args(self):
return ['--param1', '1', '--param2', '2']

def requires(self):
return BuildJobTask()

关于python - 使用 Luigi python 运行 Hadoop jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com