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 { p>
//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
for(String r:rows){ p>
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 p>
* */
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{ p>
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 p>
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();
}
/** p>
* 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
for(String fila:filas){
Eliminar del =nuevo Eliminar(Bytes.toBytes(fila));
lista.add(del);
}
tabla.delete(lista); p> 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());
}
}
}