`
chenzhong
  • 浏览: 3151 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

JobBuilder.java

 
阅读更多
package common;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.GenericOptionsParser;
import org.apache.hadoop.util.Tool;

public class JobBuilder {
	
	private final Class<?> driverClass;
	private final JobConf conf;
	private final int extraArgCount;
	private final String extraArgsUsage;
	
	private String[]	extraArgs;
	
	public JobBuilder(Class<?> driverClass){
		this(driverClass,0,"");
	}

	public JobBuilder(Class<?> driverClass, int extraArgCount, String extraArgsUage) {
		this.driverClass = driverClass;
		this.extraArgCount= extraArgCount;
		this.extraArgsUsage = extraArgsUage;
		this.conf = new JobConf(driverClass);
	}
	
	public static JobConf parseInputAndOutput(Tool tool, Configuration conf, String[] args){
		if(args.length != 2){
			printUsage(tool, "<input><output>");
			return null;
		}
		
		JobConf jobConf = new JobConf(conf, tool.getClass());
		FileInputFormat.addInputPath(jobConf, new Path(args[0]));
		FileOutputFormat.setOutputPath(jobConf, new Path(args[1]));
		
		return jobConf;
	}

	private static void printUsage(Tool tool, String extraArgsUsage) {
		// TODO Auto-generated method stub
		System.err.printf("Usage: %s [genericOptions] %s \n\n", tool.getClass().getSimpleName(),
				extraArgsUsage);
		GenericOptionsParser.printGenericCommandUsage(System.err);
		
	}
	
	private JobBuilder withCommandLineArgs(String... args) throws IOException{
		GenericOptionsParser parser = new GenericOptionsParser(conf, args);
		String[]	otherArgs = parser.getRemainingArgs();
		if(otherArgs.length < 2 || otherArgs.length > 3+extraArgCount){
			System.err.printf("Usage: %s [genericOptions] [-overwrite] <input path> <output path> %s\n\n", 
					driverClass.getSimpleName(), extraArgsUsage);
			GenericOptionsParser.printGenericCommandUsage(System.err);
			System.exit(-1);
		}
		int index = 0;
		boolean overwrite = false;
		if(otherArgs[index].equals("-overwrite")){
			overwrite = true;
			index++;
		}
		Path inputPath = new Path(otherArgs[index++]);
		Path outputPath = new Path(otherArgs[index++]);
		
		if(index < otherArgs.length){
			extraArgs = new String[otherArgs.length - index];
			System.arraycopy(otherArgs, index, extraArgs, 0, otherArgs.length - index);
			
		}
		if(overwrite){
			outputPath.getFileSystem(conf).delete(outputPath, true);
		}
		
		FileInputFormat.addInputPath(conf, inputPath);
		FileOutputFormat.setOutputPath(conf, outputPath);
		
		return this;
	}
	
	public JobConf build(){
		return this.conf;
	}
	public String[]	getExtraArgs(){
		return this.extraArgs;
	}

}
分享到:
评论

相关推荐

    java spring quartz 动态定时任务

    Java Spring Quartz 动态定时任务是企业级应用中常见的需求,用于执行周期性的后台作业,如数据同步、报表生成等。Spring与Quartz的结合使用,使得我们可以方便地在Spring框架下管理定时任务,同时还能实现任务的...

    java 定时任务

    首先,Java定时任务的实现通常会涉及到两个主要的API:Java的`java.util.Timer`类和`java.util.TimerTask`类,以及更强大且灵活的开源库Quartz Scheduler。这里我们主要讨论Quartz Scheduler,因为它在企业级应用中...

    java每天实现定点执行任务

    要完成这样的功能,我们通常会利用Java的定时任务框架,如`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`或者更高级的Quartz库。以下将详细介绍如何使用这些方法来实现每日定时任务。 1. *...

    Java使用quartz实现任务调度定时任务

    JobDetail job = JobBuilder.newJob(YourCustomJob.class) .withIdentity(jobDto.getJobName(), jobDto.getJobGroup()) .build(); // 创建Trigger Trigger trigger = TriggerBuilder.newTrigger() ....

    定时任务(java)

    首先,Java内置了`java.util.Timer`和`java.util.TimerTask`类,它们提供了基本的定时任务功能。`Timer`类用于创建一个定时器,而`TimerTask`是可调度的任务类,继承自它即可定义需要定时执行的任务。以下是一个简单...

    java quartz定时任务项目+jar包.zip

    JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") // 设置Job的名称和组名 .build(); // 创建CronTrigger实例 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder....

    java-springboot-quartz-定时任务.zip

    Java SpringBoot Quartz 定时任务是一个广泛应用于企业级开发中的技术组合,主要用于自动化执行周期性的任务。SpringBoot作为轻量级的框架,简化了Spring应用的初始搭建以及开发过程,而Quartz则是一个功能强大的...

    Java关于时间调度的几种实现方(Timer Quartz Spring)

    `java.util.Timer` 类提供了一个调度任务的方法,而`TimerTask` 是一个抽象类,用于定义要在特定时间执行的任务。以下是如何使用它们的基本示例: ```java import java.util.Timer; import java.util.TimerTask; ...

    java时间触发器配置方法

    import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ExecutorServiceConfig { public static void main(String[] args) { ScheduledExecutorService ...

    Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)

    在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确地在特定时间点执行任务,比如设置每天特定时间执行的任务。 Quartz是一个强大且灵活的开源作业...

    quatz 2.2 实例

    Quartz 2.2 是一个开源的工作调度框架,它允许开发者在 Java 应用程序中创建、调度和管理任务。这个实例将展示如何利用 Quartz 2.2 创建一个每分钟执行一次的简单作业(Job)。我们将主要关注 `ExecJob.java` 和 `...

    一个java Quartz的小例子

    Java Quartz 是一个强大的开源作业调度框架,用于在Java应用程序中创建和管理计划任务。它允许开发者精确地安排任务执行,可以按需重复、延迟或在特定时间触发。在这个小例子中,我们将深入理解如何使用Java Quartz...

    spring定时器 Spring定时器的两种实现方式Java的Timer类和OpenSymphony的Quartz。

    Java `java.util.Timer` 类是Java标准库中的一个轻量级定时任务工具。它的使用相对简单,适用于简单的定时任务需求。`Timer` 类包含两个主要的方法:`schedule(TimerTask task, Date firstTime)` 和 `schedule...

    java发送邮件附件以及定时任务

    Java中实现定时任务的方式有很多,如使用`java.util.Timer`和`TimerTask`,或者使用更现代的`java.time`包中的`ScheduledExecutorService`。不过,最常用的是Quartz库,它提供了强大的定时任务管理能力,支持Cron...

    Quartz2.2.1java任务持久(mysql)存储demo以及资料

    JobDetail job = JobBuilder.newJob(SimpleJob.class) .withIdentity("myJob", "group1") .build(); Trigger trigger = createTrigger(); scheduler.scheduleJob(job, trigger); System.out.println("定时...

    Java中使用Quartz实现任务自动调度的经典例子!

    JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") // 名称为"myJob",属于"group1"组 .build(); ``` 3. **创建Trigger**:根据需求选择合适的触发器类型,比如CronTrigger。 ...

    JAVA实例quartz

    JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "myGroup") // 设置任务名称和分组 .build(); ``` 接下来,定义 `Trigger` 来指定任务何时触发。这里可以使用 `SimpleTrigger` 来设置一...

    Quartz调度、终止执行的任务

    JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") // 设置Job的名字和组名 .build(); // 创建Trigger Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(...

    QuartzManager

    JobDetail jobDetail = JobBuilder.newJob(jobClass) .withIdentity(jobName, jobGroupName).build(); JobData jobData = new JobData(); jobData.setJobId(jobName); jobData.setJobName(jobName); jobDetail...

Global site tag (gtag.js) - Google Analytics