本文已参加「新人创作礼」活动,一起开启掘金创作之路。
这次带来的是利用 Java API 对 Hbase 的数据库操作。
我们可以非常简单的利用 Java API 实现很多针对 Hbase 的操作,例如下面的四个实例:
实例说明
-
addvalue函数:向数据库中添加新的值
-
输入:行键,列簇,列,新值
-
输出:向数据库中添加操作
-
-
createTable :创建表的函数
-
输入:null
-
输出:数据库中的添加新的表
-
-
delete函数,从数据库中删除制定单元格的数据
-
输入:行键,列簇,列,删除的方式
-
输出:从数据库中删除对应的值
-
-
getData函数,从数据库中获取数据
-
输入参数:行键,列簇,列
-
输出:该cell的值
-
相关代码
main.java
import java.io.IOException;
import Hbase.Util;
public class main {
public static void main(String[] args) throws Exception {
System.out.println("hello");
Util.setUp();
Util.createTable();
Util.addValue("gbh","info","age","21");
Util.getData("gbh_javaAPI_work","gbh","info","age");
}
}
Util.java
package Hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
import java.io.IOException;
import static java.nio.charset.StandardCharsets.*;
public class Util {
public static Connection connection=null;
public static Admin admin=null;
/**
* @throws IOException
*
* 1.sudo dhclient -v 获得ip地址获后,写入Ubuntu的/etc/hosts下,并允许hostname master
* 2.windows "C:\Windows\System32\drivers\etc" 添加 <ip> master
* 3.检验是否能连通.
*/
public static void setUp() throws IOException {
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum", "hadoop.xwyzsn.site");
configuration.set("hbase.zookeeper.property.clientPort", "9999");
//取得一个数据库连接对象
connection= ConnectionFactory.createConnection(configuration);
admin=connection.getAdmin();
System.out.println("success");
}
public static void createTable() throws Exception {
System.out.println("开始创建表");
TableName tableName = TableName.valueOf("gbh_javaAPI_work");
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info")).build();
tableDescriptor.setColumnFamily(family);
admin.createTable(tableDescriptor.build());
System.out.println("创建成功");
}
public static void addValue(String row, String cf, String col, String newValue) throws IOException {
TableName tableName =TableName.valueOf("gbh_javaAPI_work");
Table table = connection.getTable(tableName);
Put put = new Put(row.getBytes(UTF_8));
put.addColumn(cf.getBytes(UTF_8),col.getBytes(UTF_8),newValue.getBytes(UTF_8));
table.put(put);
table.close();
}
public static void delect (String Table ,String row,String cf,String col,String method ) throws IOException {
TableName tableName = TableName.valueOf(Table);
Table table = connection.getTable(tableName);
Delete delete = new Delete(row.getBytes(UTF_8));
if (method.equals("1")){
delete.addColumn(cf.getBytes(UTF_8),col.getBytes(UTF_8));
}else{
}
table.close();
}
public static String getData(String Table,String rowKey,String ColFamily,String col) throws Exception {
Get get = new Get(Bytes.toBytes(rowKey));
TableName tableName = TableName.valueOf(Table.getBytes(UTF_8));
Table table = connection.getTable(tableName);
Result rs = table.get(get);
// System.out.println("Result: " + rs);
byte[] valueBytes = rs.getValue(Bytes.toBytes(ColFamily), Bytes.toBytes(col));
String valueStr = new String(valueBytes,"utf-8");
return valueStr;
}
}
大家感兴趣的也可以自己去做一做呀!