写MOB表


功能简介

HBase MOB数据的写入与普通HBase数据的写入没有什么区别,对客户来说是透明的。为了使用HBase MOB功能需要在“hbase-site.xml”中添加HBase MOB相关的配置项,具体请参见HBase MOB配置章节,除此之外还需要在指定column family上开启MOB功能,样例代码如下:

代码样例

public void testCreateMOBTable() {
      LOG.info("Entering testCreateMOBTable.");

    Admin admin = null;
    try {
      // Create Admin instance
      admin = conn.getAdmin();
      HTableDescriptor tabDescriptor = new HTableDescriptor(tableName);
      HColumnDescriptor mob = new HColumnDescriptor("mobcf");
      // Open mob function
      mob.setMobEnabled(true);
      // Set mob threshold
      mob.setMobThreshold(10L);
      tabDescriptor.addFamily(mob);
      admin.createTable(tabDescriptor);
      LOG.info("MOB Table is created successfully.");
    } catch (Exception e) {
      LOG.error("MOB Table is created failed " ,e);
    } finally {
        if (admin != null) {
            try {
              // Close the Admin object.
              admin.close();
            } catch (IOException e) {
              LOG.error("Close admin failed " ,e);
            }
          }
    }
    LOG.info("Exiting testCreateMOBTable.");
  }
样例:用Put接口写入MOB数据
public void testMOBDataInsertion() {
      LOG.info("Entering testMOBDataInsertion.");

    Table table = null;
    try {
      // set row name to "row"
      Put p = new Put(Bytes.toBytes("row"));
      byte[] value = new byte[1000];
      // set the column value of column family mobcf with the value of "cf1"
      p.addColumn(Bytes.toBytes("mobcf"), Bytes.toBytes("cf1"), value);
      // get the table object represent table tableName
      table = conn.getTable(tableName);
      // put data
      table.put(p);
      LOG.info("MOB data inserted successfully.");
    } catch (Exception e) {
        LOG.error("MOB data inserted failed " ,e);
    } finally {
        if(table != null){
            try {
                table.close();
            } catch (Exception e2) {
                LOG.error("Close table failed " ,e);
            }
        }
    }
    LOG.info("Exiting testMOBDataInsertion.");
  }

注意事项

不允许多个线程在同一时间共用同一个HTable实例。HTable是一个非线程安全类,因此,同一个HTable实例,不应该被多个线程同时使用,否则可能会带来并发问题。

results matching ""

    No results matching ""