HBase协处理器在表中插入数据时先想数据插入到另一张表中

    技术2022-07-11  104

    HBase协处理器

    实现功能:在表中插入数据时先想数据插入到另一张表中开发协处理器打包成jar包上传到HDFS上将打好的jar包挂载到proc1表当中去卸载掉协处理器

    实现功能:在表中插入数据时先想数据插入到另一张表中

    开发协处理器

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver; import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import java.io.IOException; public class Processor extends BaseRegionObserver { @Override public void prePut(ObserverContext<RegionCoprocessorEnvironment> e, Put put, WALEdit edit, Durability durability) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "node01,node02,node03"); Connection connection = ConnectionFactory.createConnection(configuration); Cell nameCell = put.get("info".getBytes(), "name".getBytes()).get(0); Put put1 = new Put(put.getRow()); put1.add(nameCell); Table reverseuser = connection.getTable(TableName.valueOf("proc2")); reverseuser.put(put1); reverseuser.close(); } }

    打包成jar包上传到HDFS上

    hdfs dfs -mkdir -p /processor hdfs dfs -put processor.jar /processor

    将打好的jar包挂载到proc1表当中去

    alter 'proc1',METHOD => 'table_att','Coprocessor'=>'hdfs://node01:8020/processor/processor.jar|cn.itcast.hbasemr.MyProcessor|1001|'

    卸载掉协处理器

    disable 'proc1' alter 'proc1',METHOD=>'table_att_unset',NAME=>'coprocessor$1' enable 'proc1'
    Processed: 0.012, SQL: 9