hbase 자바 API 와 새 데이터, 생 성 표
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 (홈 페이지 예제)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.