Red de conocimiento informático - Material del sitio web - Cómo utilizar el programa MapReduce para procesar hbase

Cómo utilizar el programa MapReduce para procesar hbase

Primero, veamos el ejemplo estándar del uso de hbase como fuente de lectura de datos y destino de salida:

Configuración conf = HBaseConfiguration.create();

Trabajo trabajo = nuevo Trabajo(conf , "nombre del trabajo ");

job.setJarByClass(test.class);

Escanear escaneo = new Scan()

TableMapReduceUtil.initTableMapperJob(inputTable); , escanear, mapper.class, Writable.class, Writable.class, trabajo);

TableMapReduceUtil.initTableMapperJob(inputTable, scan, mapper.class, Writable.class, job).class, trabajo);

TableMapReduceUtil.initTableReducerJob(outputTable, reducer.class, job);

job.waitForCompletion(true);

La diferencia con el programa mr ordinario es que, En lugar de utilizar la función job.setMapperClass(), utilizamos la función job.setMapperClass(). setMapperClass() y job.setReducerClass() para configurar el asignador y el reductor; en su lugar, utilice los métodos initTableMapperJob e initTableReducerJob de TableMapReduceUtil. TableMapReduceUtil aquí proviene del paquete hadoop.hbase.mapreduce, no del paquete hadoop.hbase.mapred.

La fuente de entrada de datos es la tabla inputTable de hbase.class se ejecuta para el proceso de mapeo. Los tipos de clave/valor de salida son ImmutableBytesWritable y Put. Cabe señalar que debe declarar un escaneo de objeto de lectura de escaneo para leer datos usando el escaneo de tabla, y el parámetro de escaneo se puede configurar.

El objetivo de salida de los datos es la tabla hbase outputTable, la implementación de salida es el proceso de reducción reducer.class y el objetivo del trabajo de la operación es el trabajo. En comparación con el mapa, faltan anotaciones de tipo de salida porque no son necesarias. Si lee el código fuente, sabrá que en el método de escritura (clave, valor) de TableRecordWriter de mapreduce, no se utiliza el valor clave. el valor solo puede ser del tipo Poner o Eliminar, el método de escritura lo determinará él mismo sin tener que especificar el usuario.

La clase del asignador lee datos de hbase, por lo que la entrada

el asignador de clase pública extiende TableMapper

mapa vacío público (clave de escritura, valor de escritura, contexto de contexto) valor de escritura, contexto de contexto)

lanza IOException, InterruptedException {

>//lógica del asignador

context.write(clave, valor);