2015-04-07 2 views
0

Как настроить MapReduce Job, которая использует таблицы Hbase как источник и потоки в Spring, я планирую создать пакетное задание с Spring XD, которое использует задание mapreduce, но я хотите использовать таблицы Hbase в качестве источника и погрузиться в эту работу hadoop. Нечто подобное TableMapReduceUtil.initTableMapperJob(), TableMapReduceUtil.initTableReducerJob()MapReduce задание с использованием таблицы Hbase в качестве источника и приемника в пакетном задании Spring XD

<hdp:job> имен в настоящее время не поддерживает использование ввода/вывода таблиц

ответ

0

Я был в состоянии решить эту проблему, используя другой компонент, который принимает задание Hadoop в качестве входных данных и возвращает задание после установки параметров сканирования() и источника и таблицы Hbase. Используя scope = "job" on и scope = "prototype", я смог выполнить одно и то же задание MR несколько раз весной XD, без этого вы получите Job в состоянии RUNNING вместо состояния состояния DEFINE после первого успешного запустить.

public class InitJobTasklet { 
    private Job job; 


    public void setJob(Object job){ 
    this.job = (Job)job; 
    } 

    public Job getJob() throws IOException { 


     Scan scan = new Scan(); 
     System.out.println("Initializing the hadoop job with hbase tables and scan object... "); 
     TableMapReduceUtil.initTableMapperJob("SourceTable", 
             scan, 
             Mapper.class, 
             Text.class, Result.class, job); 

     TableMapReduceUtil.initTableReducerJob(
       "TargetTable",  // output table 
       Reducer.class,    // reducer class 
       job); 
       job.setNumReduceTasks(1); 


      return job; 
} 

}

весна пакетное задание конфигурационный файл:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:hdp="http://www.springframework.org/schema/hadoop" 
xmlns:batch="http://www.springframework.org/schema/batch" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/hadoop http://www.springframework.org/schema/hadoop/spring-hadoop.xsd 
    http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd"> 


<hdp:job id="mr-hbase-job" 
    output-path="/output" 
    mapper="mapperclass" reducer="reduceclass" 
    map-key="org.apache.hadoop.hbase.io.ImmutableBytesWritable" map-value="org.apache.hadoop.hbase.client.Result" input-format="org.apache.hadoop.hbase.mapreduce.TableInputFormat" output-format="org.apache.hadoop.hbase.mapreduce.TableOutputFormat" jar-by-class="processor class" scope="prototype"> 

</hdp:job> 

<batch:job id="job" > 
       <batch:step id="step1"> 
     <hdp:job-tasklet id="hadoop-tasklet" job="#{initTask.job}" wait-for-completion="true" scope="job"/> 
    </batch:step> 
</batch:job> 



<hdp:configuration id="hadoopConfiguration"> 
    fs.defaultFS=hdfs://localhost:9000 
hadoop.tmp.dir=/home/smunigati/hadoop/temp 
hbase.zookeeper.quorum=localhost 
hbase.zookeeper.property.clientPort=2181 
    </hdp:configuration> 

<hdp:hbase-configuration id="hbaseConfiguration" configuration-ref="hadoopConfiguration"> 
</hdp:hbase-configuration> 


    <bean id="initTask" class="com.somthing.InitJobTasklet" scope="prototype" > 
    <property name="job" ref="mr-hbase-job" /> 
    </bean> 
Смежные вопросы