当前位置:   article > 正文

8-5 HBase 开发:使用Java操作HBase_hbase 开发:使用java操作hbase

hbase 开发:使用java操作hbase

目录

第一关:

命令行:

代码:

第二关:添加数据

命令行:

代码:

第三关:获取数据

命令行:

代码:

第四关:

代码:


第一关:

命令行:

start-dfs.sh

start-hbase.sh

hadoop fs -ls /hbase

代码:

HBase中创建表dept,emp,列都为:data

Configuration config = HBaseConfiguration.create();

//使用create()静态方法就可以得到Configuration对象

Connection connection = ConnectionFactory.createConnection(config);

 //config为前文的配置对象

Admin admin = connection.getAdmin();                   //使用连接对象获取Admin对象

TableName tableName1 = TableName.valueOf("dept");         //定义表名

TableName tableName2 = TableName.valueOf("emp");  

HTableDescriptor htd1 = new HTableDescriptor(tableName1);           //定义表对象

HTableDescriptor htd2 = new HTableDescriptor(tableName2);    

HColumnDescriptor hcd1 = new HColumnDescriptor("data");      //定义列族对象

HColumnDescriptor hcd2 = new HColumnDescriptor("data");

htd.addFamily(hcd1); //添加

htd.addFamily(hcd2);

admin.createTable(htd1);//创建表

admin.createTable(htd2);

第二关:添加数据

命令行:

start-dfs.sh

start-hbase.sh

hadoop fs -ls /hbase

stop-dfs.sh

stop-hbase.sh

代码:

在HBase中创建表tb_step2,列簇都为:data,添加数据:

行号分别为:row1,row2;

列名分别为:1,2;

值分别为:张三丰,张无忌。

  1. //创建表
  2. Configuration config = HBaseConfiguration.create();
  3. Connection connection = ConnectionFactory.createConnection(config);
  4. Admin admin = connection.getAdmin();                   //使用连接对象获取Admin对象
  5. TableName tableName = TableName.valueOf("tb_step2");           //定义表名
  6. HTableDescriptor htd = new HTableDescriptor(tableName);        //定义表对象
  7. HColumnDescriptor hcd = new HColumnDescriptor("data");  //定义列族对象
  8. htd.addFamily(hcd); //添加
  9. admin.createTable(htd);//创建表
  1. //添加数据:
  2. Table table = connection.getTable(tableName);//获取Table对象
  3. try {
  4.     byte[] row1=Bytes.toBytes("row1");
  5.             byte[] row2=Bytes.toBytes("row2");
  6.             Put put1=new Put(row1);
  7.             Put put2=new Put(row2);
  8.             byte[] columnFamily=Bytes.toBytes("data");
  9.             byte[] qualifier1=Bytes.toBytes(String.valueOf(1));
  10.             byte[] qualifier2=Bytes.toBytes(String.valueOf(2));
  11.             byte[] value1=Bytes.toBytes("张三丰");
  12.             byte[] value2=Bytes.toBytes("张无忌");
  13.             put1.addColumn(columnFamily, qualifier1, value1);;
  14.             put2.addColumn(columnFamily,qualifier2,value2);
  15.             table.put(put1);
  16.             table.put(put2);
  17. } finally {
  18.     //使用完了要释放资源
  19.     table.close();
  20. }

第三关:获取数据

命令行:

  1. start-dfs.sh
  2. start-hbase.sh
  3. hadoop fs -ls /hbase

输出t_step3表中行号为row1,列族为data:1的值(以utf-8编码),

输出table_step3表中所有行的行名称(因为直接输出scannerResult会带有时间戳,所以输出行名方便测评)。

代码:

  1. Configuration config = HBaseConfiguration.create();
  2.  Connection connection = ConnectionFactory.createConnection(config);
  3.  Admin admin = connection.getAdmin();
  4.  TableName tableName = TableName.valueOf("t_step3");
  5.  Table table = connection.getTable(tableName);

#获取指定行的数据

  1. //获取数据
  2. Get get = new Get(Bytes.toBytes("row1"));    //定义get对象
  3. Result result = table.get(get);            //通过table对象获取数据
  4. System.out.println("Result: " + result);
  5. byte[] valueBytes = result.getValue(Bytes.toBytes("data"), Bytes.toBytes("1"));
  6. String valueStr = new String(valueBytes,"utf-8");
  7. System.out.println("value:" + valueStr);

#扫描表中的数据

  1. Scan scan = new Scan();
  2. ResultScanner scanner = table.getScanner(scan);
  3. try {
  4.     for (Result scannerResult: scanner) {
  5.         System.out.println("Scan: " + scannerResult);
  6.          byte[] row = scannerResult.getRow();
  7.          System.out.println("rowName:" + new String(row,"utf-8"));
  8.     }
  9. } finally {
  10.     scanner.close();
  11. }

第四关:

代码:

  1. Configuration config = HBaseConfiguration.create();
  2.  Connection connection = ConnectionFactory.createConnection(config);
  3.  Admin admin = connection.getAdmin();
  4.  TableName tableName = TableName.valueOf("t_step4");
  5.  admin.disableTable(tableName);
  6.  admin.deleteTable(tableName);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/35038
推荐阅读
相关标签
  

闽ICP备14008679号