Red de conocimiento informático - Material del sitio web - Cómo utilizar la API de Java para operar Hbase

Cómo utilizar la API de Java para operar Hbase

Escribí una clase de herramienta para agregar, eliminar, modificar y verificar la nueva API de Hbase como referencia. Sanxian cree que todas las funciones básicas están ahí. de la siguiente manera:

paquete com.dhgate.hbase.test;

importar java.util.ArrayList;

importar java.util.List;

importar org.apache.hadoop.conf.Configuration;

importar org.apache.hadoop.hbase.Cell;

importar org.apache.hadoop.hbase.CellUtil ;

importar org.apache.hadoop.hbase.HBaseConfiguration;

importar org.apache.hadoop.hbase.HColumnDescriptor;

importar org.apache.hadoop .hbase.HTableDescriptor;

importar org.apache.hadoop.hbase.TableName;

importar org.apache.hadoop.hbase.client.Delete;

importar org.apache.hadoop .hbase.client.Get;

importar org.apache.hadoop.hbase.client.HBaseAdmin;

importar org.apache.hadoop.hbase.client .HTable;

importar org.apache.hadoop.hbase.client.Put;

importar org.apache.hadoop.hbase.client.Result;

importar org.apache.hadoop .hbase.client.ResultScanner;

importar org.apache.hadoop.hbase.client.Scan;

importar org.apache.hadoop.hbase.filter .PageFilter;

importar org.apache.hadoop.hbase.filter.PrefixFilter;

importar org.apache.hadoop.hbase.util.Bytes;

/**

* Basado en la nueva API

* Versión Hbase0.96

* Clase de herramienta escrita

*

* @ autor qindogliang

* Grupo de intercambio de tecnología de big data: 376932160

*

* **/

clase pública HbaseCommons {

Configuración estática conf=HBaseConfiguration.create();

static String tableName="";

public static void main(String[] args) lanza una excepción {

//String tableNam

e="test";

//createTable(tableName, null);

}

/**

* Agregar por lotes Datos

* @param tableName nombre de etiqueta

* @param filas fila clave colección de claves de fila

* Este método es solo un ejemplo, es necesario determinar otros contenidos por ti mismo Cambio de obligación

*

* **/

public static void insertList(String tableName,String rows[])throws Exception{

HTable table=new HTable(conf, tableName);

List list=new ArrayList();

for(String r:rows){

Put p=new Put(Bytes.toBytes(r));

//Agrega aquí otra información al ejemplo

//p.add( Bytes.toBytes ("familia"),Bytes.toBytes("columna"), 1000, Bytes.toBytes("valor"));

list.add(p);

}

table.put(list);//Adición de lotes

table.close();//Liberar recursos

}

/ **

* Crear una tabla

* @param tableName nombre de la tabla

* @param columnFamilys familia de columnas

*

* **/

public static void createTable(String tableName,String[] columnFamilys)throws Exception{

//objeto administrador

HBaseAdmin admin=new HBaseAdmin(conf);

if(admin.tableExists(tableName)){

System.out.println("¡Esta tabla ya existe! ");

}else{

//Forma antigua de escribir

//HTableDescriptor tableDesc=new HTableDescriptor(tableName);

//Nueva API

HTableDescriptor tableDesc=new HTableDescriptor(TableName.valueOf(tableName));

for(String columnFamily:columnFamilys){

tableDesc. addFamily(new HColumnDescriptor(columnFamily));

}

admin.createTable(tableDesc);

System.out.println("¡Creación de tabla exitosa!" );

}

admin.close();/

/Cerrar recursos de liberación

}

/**

* Eliminar una tabla

* @param tableName El nombre de la tabla eliminada

* */

public static void deleteTable(String tableName) lanza una excepción{

HBaseAdmin admin=new HBaseAdmin(conf);

if (admin.tableExists(tableName)){

admin.disableTable(tableName);//Desactivar tabla

admin.deleteTable(tableName);//Eliminar tabla

System.out.println("¡Elimine la tabla correctamente!");

}else{

System.out.println("¡La tabla eliminada no existe!" );

}

admin.close();

}

/**

* Insertar un dato

* @param tableName indica

* @param columnFamily familia de columnas

* @param columna columna

* @ valor del parámetro valor

p>

*

* ***/

public static void insertOneRow(String tableName,String rowkey,String columnFamily,String column,String valor) lanza una excepción{

HTable table=new HTable(conf, tableName);

Put put=new Put(Bytes.toBytes(rowkey));

put.add(Bytes. toBytes(columnFamily), Bytes.toBytes(columna), Bytes.toBytes(value));

table.put(put);//Ponlo en la tabla

table.close( );//Liberar recursos

}

/**

* Eliminar un dato

* @param tableName nombre de la tabla

p>

* @param fila fila clave clave de fila

*

* */

public static void eliminarOneRow(String tableName,String fila)throws Exception {

HTable table=new HTable(conf, tableName);

Eliminar eliminar=nuevo Eliminar(Bytes.toBytes(fila ));

table.delete (eliminar);

table.close();

}

/**

* Eliminar varios datos

* @param tableName nombre de la tabla

* @param filas colección de claves de fila

<

p> *

* **/

lista de eliminación de vacío estático público (nombre de la tabla de cadenas, filas de cadenas []) lanza una excepción {

tabla HTable = nueva HTable ( conf, tableName);

List list=new ArrayList();

for(String fila:filas){

Eliminar del =nuevo Eliminar(Bytes.toBytes(fila));

lista.add(del);

}

tabla.delete(lista); p>

table.close();//Liberar recursos

}

/**

* Obtener un dato basado en clave de fila

* @param tableName nombre de la tabla

* @param fila clave de fila

*

* **/

public static void getOneRow(String tableName,String row)throws Exception{

HTable table=new HTable(conf, tableName);

Get get=new Get(Bytes. toBytes(fila) );

Resultado result=table.get(get);

printRecoder(resultado);//Imprimir registro

table.close( );// Liberar recursos

}

/**

* Ver todos los datos debajo de una tabla

*

* @param tableName nombre de la tabla

* */

public static void showAll(String tableName)throws Exception{

HTable table=new HTable( conf, tableName);

Scan scan=new Scan();

ResultScanner rs=table.getScanner(scan);

for(Resultado r:rs ){

printRecoder(r);//Imprimir registro

}

table.close();//Liberar recursos

}

/**

* Ver todos los datos debajo de una tabla

*

* @param tableName nombre de la tabla

* @param rowKey clave de fila

* */

public static void ScanPrefixByRowKey(String tableName,String rowKey)throws Exception{

HTable table= new HTable(conf, tableName);

Scan scan=new Scan();

scan.

setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));

ResultScanner rs=table.getScanner(scan);

for(Result r:rs){

printRecoder(r);//Imprimir registro

}

table.close();//Liberar recursos

}

/**

* Ver todos los datos debajo de una tabla

*

* @param tableName nombre de la tabla

* @param rowKey escaneo de clave de fila

* @param limit limita la cantidad de datos devueltos

* */

public static void ScanPrefixByRowKeyAndLimit(String tableName,String rowKey,long límite) lanza una excepción{

HTable table=new HTable(conf, tableName);

Scan scan=new Scan();

scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));

scan.setFilter(new PageFilter(limit));

ResultScanner rs=table.getScanner(scan);

for(Resultado r:rs){

printRecoder(r);//Imprimir registro

}

table.close();// Liberar recursos

}

/**

* Escanear un rango según la clave de fila

* @param tableName nombre de la tabla

* @param startRow La clave de la fila inicial

* @param stopRow La clave de la fila final

* **/

public void scanByStartAndStopRow(String tableName, String startRow, String stopRow) lanza una excepción{

HTable table=new HTable(conf, tableName);

Scan scan=new Scan();

scan.setStartRow(Bytes.toBytes(startRow));

scan.setStopRow(Bytes.toBytes(stopRow));

ResultScanner rs=table.getScanner(scan);

p>

for(Resultado r:rs){

printRecoder(r);

}

table.close();/ /Liberar recursos

}

/**

* Escanear el valor de un campo específico en toda la tabla

* @param tableName nombre de la tabla

* @param columnFalimy familia de columnas

<

p> * @param columna columna

* **/

public static void getValueDetail(String tableName,String columnFalimy,String column)throws Exception{

HTable table=new HTable(conf, tableName);

Scan scan=new Scan();

ResultScanner rs=table.getScanner(scan);

para (Resultado r:rs){

System.out.println("Valor: " +new String(r.getValue(Bytes.toBytes(columnaFalimy), Bytes.toBytes(columna))));

}

table.close();//Liberar recursos

}

/**

* Imprime los detalles de un registro

*

* */

public static void printRecoder(Resultado resultado)lanza una excepción{

para ( Celda celda:result.rawCells()){

System.out.print("行jian: "+new String(CellUtil.cloneRow(cell)));

Sistema .out.print("Familia de columnas: "+new String(CellUtil.cloneFamily(cell)));

System.out.print("Columna: "+new String(CellUtil.cloneQualifier(cell) ) );

System.out.print(" Valor: "+new String(CellUtil.cloneValue(cell)));

System.out.println("Marca de tiempo: " +cell.getTimestamp());

}

}

}