maven创建hbase操作

1 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.demo</groupId>
 <artifactId>hbasedemo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-hdfs</artifactId>
   <version>2.7.3</version>
  </dependency>
  <dependency>
   <groupId>org.apache.hbase</groupId>
   <artifactId>hbase-client</artifactId>
   <version>1.2.6</version>
  </dependency>
  <dependency>
   <groupId>jdk.tools</groupId>
   <artifactId>jdk.tools</artifactId>
   <version>1.8</version>
   <scope>system</scope>
   <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
  </dependency>
  <!-- 
  如果是WEB项目,还需要在pom.xml中导入javaee-api.jar
         <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
  -->
 </dependencies>
</project>

2 测试代码

package demo;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.ExecutorService;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;


public class MTable {
    Configuration conf=HBaseConfiguration.create();
    HBaseAdmin admin;
    public MTable() throws IOException {
     conf.set("hbase.rootdir", "hdfs://master:9000/hbase");
     conf.set("hbase.zookeeper.quorum", "master,slavea,slaveb");
     
  Connection con = ConnectionFactory.createConnection(conf);
  admin=(HBaseAdmin) con.getAdmin();
    }
    public void createtab(String tname,String fname) throws IOException {
     boolean isTable = admin.tableExists(tname);
     if(!isTable) {
      TableName tabname=TableName.valueOf(tname);
      HTableDescriptor tab=new HTableDescriptor(tabname);
      tab.addFamily(new HColumnDescriptor(fname));
      admin.createTable(tab);
      
     }
    }
    public void addrow(String tname,String fname) throws IOException {
     Connection con = ConnectionFactory.createConnection(conf);
     Table table = con.getTable(TableName.valueOf(tname));
     String rowid="1";
  Put put=new Put(Bytes.toBytes(rowid));
  String colname="xname";
  put.addColumn(Bytes.toBytes(fname), Bytes.toBytes(colname), Bytes.toBytes("zhang"));
  table.put(put);
  con.close();

    }

private void scantable(String tname) throws IOException {
Scan scan = new Scan();  
        scan.setStartRow(Bytes.toBytes("1"));  
        scan.setStopRow(Bytes.toBytes("8"));//实验发现范围取[1,6),左闭右开
        
        ResultScanner rs = null;  
        Connection con = ConnectionFactory.createConnection(conf);
Table table = con.getTable(TableName.valueOf(tname));
        rs = table.getScanner(scan);  
        for(Result r : rs){  
            for (KeyValue kv : r.list()){  
                System.out.println("row:" + Bytes.toString(kv.getRow()));  
                System.out.println("family:"+ Bytes.toString(kv.getFamily()));  
                System.out.println("qualifier:"+ Bytes.toString(kv.getQualifier()));  
                System.out.println("value:" + Bytes.toString(kv.getValue()));  
                System.out.println("timestamp:" + kv.getTimestamp());  
                System.out.println("-------------------------------------------");  
            }  
        }     
}
@SuppressWarnings("deprecation")
private void readData(String tname, String fname) throws IOException {
Connection con = ConnectionFactory.createConnection(conf);
Table table = con.getTable(TableName.valueOf(tname));
Get row =  new Get(Bytes.toBytes("1"));  
Result res = table.get(row);
// List<KeyValue> list = res.list();
for (KeyValue kv : res.list()) {
byte[] family = kv.getFamily();
byte[] colname = kv.getQualifier();
byte[] value = kv.getValue();
long timestamp = kv.getTimestamp();
System.out.println("family:"+new String(family)+",column:"+new String(colname)+",value:"+new String(value));
}
}

 public static void main(String[] args) throws IOException {
  MTable mt=new MTable();
  String tname = "tabemp";
  String fname = "fma";
  mt.createtab(tname, fname);
  mt.addrow(tname, fname);
 }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值