package test;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.sql.*;
import java.util.Date;
import java.util.Formatter;
import java.io.IOException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.LongWritable;
//import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapred.lib.db.*;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.*;
import org.apache.hadoop.mapreduce.lib.output.*;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.util.*;
import org.apache.hadoop.*;
import idb_hadoop.*;
public class InfiniDoopDriver extends Configured implements Tool
{
public int run (String[] args) throws Exception
{
Configuration conf = new Configuration();
JobConf jobconf = new JobConf(conf, InfiniDoopDriver.class);
DBConfiguration.configureDB(jobconf,
"com.mysql.jdbc.Driver",
"jdbc:mysql://srvswint4/tpch1","root", "");
String [] fields = { "n_nationkey", "n_name" };
String [] outFields = {"id", "name"};
jobconf.setInputFormat(InfiniDBInputFormat.class);
//Class.forName(jobconf.get(DBConfiguration.DRIVER_CLASS_PROPERTY));
//Connection connection = DriverManager.getConnection("jdbc:mysql://srvswint4/tpch1?user=root");
//Job job = new Job(jobconf, "infinidb_driver");
jobconf.setOutputKeyClass(LongWritable.class);
jobconf.setOutputValueClass(Text.class);
//jobconf.setMapOutputKeyClass(LongWritable.class);
//jobconf.setMapOutputValueClass(LongWritable.class);
InfiniDBInputFormat.setInput(jobconf, InfiniDoopRecord.class, "nation",
null, "n_nationkey", fields);
//InfiniDBInputFormat.setInput(jobconf, InfiniDBRecord.class, "select * from nation", "select count(*) from nation");
Job job = new Job(jobconf);
jobconf.set("mapred.output.dir", "output1");
jobconf.setMapperClass(InfiniDoopInputMapper.class);
jobconf.setNumMapTasks(4);
jobconf.setNumReduceTasks(8);
JobClient client = new JobClient();
//System.out.println(jobconf.getUser());
//System.out.println(FileOutputFormat.getOutputPath(jobconf));
//int i = (job.waitForCompletion(true)? 1: 0);
//return i;
client.setConf(jobconf);
try {
JobClient.runJob(jobconf);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public static void main(String [] args) throws Exception
{
int ret = ToolRunner.run(new InfiniDoopDriver(), args);
System.exit(ret);
}
}