hbase 자바 API 와 새 데이터, 생 성 표

13535 단어
package hbaseCURD;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

public class test {

public static void main(String[] args) throws IOException {

    TableManager tm = new TableManager();
    tm.getConf();
//  tm.createTable("testtable","cf1","cf2");
    HTable mytable=tm.getTableObj("testtable");
//  Put put = new Put(Bytes.toBytes("row1"));
//  put.add(Bytes.toBytes("cf1"), Bytes.toBytes("c1"), Bytes.toBytes("cf1ddfddvalue"));
//  put.add(Bytes.toBytes("cf2"), Bytes.toBytes("c2"), Bytes.toBytes("cf2v3333alue"));
//  mytable.put(put);
//  
    Get get = new Get(Bytes.toBytes("row1")); 
    Result result = mytable.get(get); 
    System.out.println("get result:" + Bytes.toString(result.getValue(Bytes.toBytes("cf1"), Bytes.toBytes("c1")))); 
    //Result[] result = table.get(List<Get>);//    Rowkey      

}



}
package hbaseCURD;

import java.io.IOException;

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.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

public class TableManager {
    private static Configuration conf;

    //          
    public void getConf() {
        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "master,slave1,slave2");
        conf.set("hbase.master", "master:60000");
    }

    //      
    public HTable getTableObj(String tablename) {
        HTable mytable = null;
        try {
            mytable = new HTable(conf, tablename);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return mytable;
    }

    //
    public void createTable(String tableName, String... args) throws MasterNotRunningException, ZooKeeperConnectionException {
        // args        
        HBaseAdmin admin = new HBaseAdmin(conf);
        //    
        HTableDescriptor htd = new HTableDescriptor(tableName);
        for (String st : args) {
            htd.addFamily(new HColumnDescriptor(st));
        }
        try {
            admin.createTable(htd);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void deleteTable(String tableName) {
        try {
            HBaseAdmin admin = new HBaseAdmin(conf);
            //    
            HTableDescriptor htd = new HTableDescriptor(tableName);
            admin.disableTable(Bytes.toBytes(tableName));
            admin.deleteTable(Bytes.toBytes(tableName));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }
    public void modifyTable(String tableName,String newcoloumf) {
        try {
            HBaseAdmin admin = new HBaseAdmin(conf);
            //    
            HTableDescriptor htd = new HTableDescriptor(tableName);
            admin.disableTable(Bytes.toBytes(tableName));
            admin.modifyColumn(tableName, new HColumnDescriptor("cf1"));    
            admin.enableTable(tableName);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }

}

Hbase 의 접근 방식 1. Native Java API: 가장 일반적인 효율 적 인 접근 방식;2. HBase Shell: HBase 의 명령 행 도구 로 가장 간단 한 인터페이스 로 HBase 관리 에 적합 합 니 다.3. Thrift Gateway: Thrift 직렬 화 기술 을 이용 하여 C + +, PHP, Python 등 다양한 언어 를 지원 하고 다른 이 구조 시스템 이 온라인 으로 HBase 표 데 이 터 를 방문 하 는 데 적합 합 니 다.4. REST Gateway: REST 스타일 의 Http API 를 지원 하여 HBase 에 접근 하여 언어 제한 을 해제 합 니 다.5. MapReduce: MapReduce 작업 으로 Hbase 데 이 터 를 직접 처리 합 니 다.6. Pig / hive 를 사용 하여 Hbase 데 이 터 를 처리 합 니 다.자바 API 를 자주 사용 하 는 방법:
1. 로 딩 설정
[java] view plaincopy 는 CODE 에서 내 코드 편 으로 파생 된 코드 편 을 봅 니 다. Configuration config = HBaseConfiguration. create (); /설정 을 사용자 정의 할 수도 있 고 사용자 정의 설정 파일 에서 / * config. set ("hbase. zookeeper. property. clientPort", "4181") 를 읽 을 수도 있 습 니 다.config.set(“hbase.zookeeper.quorum”, “hadoop.datanode5.com,hadoop.datanode2.com,hadoop.datanode3.com”); config.set(“hbase.master”, “hadoop.datanode3.com\:600000”);*/ 2. 표 의 생 성, 표 정보 수정, 표 삭제
[java] view plaincopy 는 CODE 에서 코드 를 보고 내 코드 에 파생 된 HBaseAdmin = new HBaseAdmin (config); /표 HTableDescriptor htd = new HTableDescriptor (tableName) 를 만 듭 니 다.htd.addFamily(new HColumnDescriptor(“cf1”)); htd.addFamily(new HColumnDescriptor(“cf2”)); admin.createTable(htd); //수정 표 정보 admin. disable Table (tableName); /modifying existing ColumnFamily admin.modifyColumn(tableName, new HColumnDescriptor(“cf1”)); admin.enableTable(tableName); //표 admin. disable Table (Bytes. toBytes (tableName) 을 삭제 합 니 다.admin.deleteTable(Bytes.toBytes(tableName)); 3. 기록 [java] view plaincopy 를 추가 하여 CODE 에서 코드 조각 이 내 코드 조각 에 파생 된 것 을 봅 니 다 / * 여러 번 사용 할 때 HTablePool HTable table = new HTable (config, tableName) 을 사용 하 는 것 을 권장 합 니 다. = >HTablePool pool = new HTablePool(config, 1000); HTableInterface table = pool.getTable(tableName);*/ HTable table = new HTable(config, tableName);
/ * * 작업 을 삽입 할 때 기본 값 은 캐 시 적용 되 지 않 습 니 다. * 캐 시 사용 및 캐 시 크기 를 사용자 정의 할 수 있 습 니 다. * 모든 작업 은 마지막 으로 flushcomits () 를 수 동 으로 호출 해 야 합 니 다. * / *table.setAutoFlush(false); table.setWriteBufferSize(1024);*/
Put put1 = new Put(Bytes.toBytes(rowKey)); if (ts = = 0) {put1. add (Bytes. toBytes (family), Bytes. toBytes (qualifier), Bytes. toBytes (value);} else {/ / 사용자 정의 버 전 을 사용 할 때 사용자 정의 버 전 번호 에서 long put1. add (Bytes. toBytes (family), Bytes. toBytes (qualifier), ts, Bytes. toBytes (value);} table. put (put1); / /table.flushCommits(); 4. 조회, Rowkey 조회 [java] view plaincopy 에 따라 CODE 에서 코드 조각 이 내 코드 조각 에 파생 된 Get get 1 = new Get (Bytes. toBytes (rowKey) 을 봅 니 다.Result result = table.get(get1); System.out.println(“get result:” + Bytes.toString(result.getValue(Bytes.toBytes(family), Bytes.toBytes(qualifier)))); Result[] result = table.get(List);//Rowkey 를 지정 한 여러 개의 기록 을 조회 합 니 다. 5. 조회, 지정 조건 과 rowkey 구간 조회 [java] view plaincopy 는 CODE 에서 코드 영 화 를 보고 제 코드 영 화 를 보 여 줍 니 다. Scan scan = new Scan (); /기본 캐 시 크기 는 1 입 니 다. 합 리 적 인 값 으로 설정 하면 scan 과정 에서 next () 의 시간 소 비 를 줄 일 수 있 습 니 다. 대 가 는 클 라 이언 트 의 메모리 scan. setCaching (500) 입 니 다.scan.setCacheBlocks(false);
/ / startRowKey, endRowKey 에 따라 조회 / / scan scan = new Scan (Bytes. toBytes ("startRowKey"), Bytes. toBytes ("endRowKey");
/ / rowKey 이외 의 필터 조건 은 List 에서 add 할 수 있 습 니 다. / * *List filters = new ArrayList(); Filter filter = new SingleColumnValueFilter(“familyName”.getBytes(), “qualifierName”.getBytes(), CompareOp.EQUAL, Bytes.toBytes(“value”)); filters.add(filter); scan.setFilter(new FilterList(filters));*/
ResultScanner scanner = table.getScanner(scan);
System.out.println(“scan result list:”);
for (Result result : scanner) { System.out.println(Bytes.toString(result.getRow())); System.out.println(Bytes.toString(result.getValue(Bytes.toBytes(“data”), Bytes.toBytes(“data1”)))); System.out.println(Bytes.toString(result.getValue(Bytes.toBytes(“data”), Bytes.toBytes(“data2”)))); } scanner.close(); 참고: 1.http://www.taobaotest.com/blogs/1605
2、http://abloz.com/hbase/book.html#data_model_operations (홈 페이지 예제)

좋은 웹페이지 즐겨찾기