HBase (三)之 API的使用

子清.發表於2020-09-26

1.新增依賴

新建maven專案。並新增依賴

    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-client</artifactId>
      <version>1.2.0</version>
    </dependency>

image-20200926162325596

2.Hbase核心API

2.1 獲取Configuration物件

Connection代表對叢集的連線物件,封裝了與實際伺服器的低階別單獨連線以及與zookeeper的連線。

Connection可以通過ConnectionFactory類例項化。

Connection的生命週期由呼叫者管理,使用完畢後需要執行close()以釋放資源。

Connection是執行緒安全的,多個Table和Admin可以共用同一個Connection物件。因此一個客戶端只需要例項化一個連線即可。

反之,Table和Admin不是執行緒安全的!因此不建議並快取或池化這兩種物件。

 public static Configuration getConf(){
     //使用HBaseConfiguration的單例方法例項化
        Configuration conf= HBaseConfiguration.create();
        conf.addResource(new Path("/opt/hbase/conf/hbase-site.xml"));
        conf.addResource(new Path("/opt/hadoop/etc/hadoop/core-site.xml"));
        return  conf;
    }

2.2 建立表

Admin為HBase的管理類,可以通過Connection.getAdmin()獲取例項,且在使用完成後呼叫close()關閉。

Admin可用於建立,刪除,列出,啟用和禁用以及以其他方式修改表,以及執行其他管理操作。

package cnkgc.hb09;

import cnkgc.hb09.until.HBaseConfs;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;

import java.io.IOException;


public class CreateTable {
    public static void main(String[] args){
        Admin admin= HBaseConfs.getAdmin();
        HTableDescriptor htd=new HTableDescriptor(TableName.valueOf(args[0]));
        for (int i = 0; i < args.length; i++) {
            HColumnDescriptor family=new HColumnDescriptor(args[i]);
            htd.addFamily(family);
        }
        try {
            admin.createTable(htd);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                admin.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}

2.3插入資料

package cnkgc.hb09;

import cnkgc.hb09.until.HBaseConfs;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;

import java.io.IOException;

public class insertTable {
    public static void main(String[] args) throws IOException {
        Connection conn= HBaseConfs.getConn();
        Admin admin=HBaseConfs.getAdmin();
        TableName[] tableNames = admin.listTableNames();
        for (TableName tableName : tableNames) {
            System.out.println(tableName.getNameAsString());
        }
        Table table=conn.getTable(TableName.valueOf("hello"));
        String[][] values={
                {"1","唐納德","tlp","1st White House","WDC"},
                {"2","鮑里斯","約翰遜","10th 唐寧街","London"},
                {"3","jp","習","111th 中南海","Beijing"},
                {"4","sp","金","地下核基地","PingRing"}
        };
        for (int i = 0; i < values.length; i++) {
            Put put=new Put(values[i][0].getBytes());
            put.addColumn("name".getBytes(),"fname".getBytes(),values[i][1].getBytes());
            put.addColumn("name".getBytes(),"lname".getBytes(),values[i][2].getBytes());
            put.addColumn("addr".getBytes(),"address".getBytes(),values[i][3].getBytes());
            put.addColumn("addr".getBytes(),"city".getBytes(),values[i][4].getBytes());
            table.put(put);
        }
        admin.close();
        conn.close();
    }

}

2.4打jar包並使用

首先測試建立表,將其打為jar包

image-20200926170843762

image-20200926170927464

image-20200926170948277

將打好的jar包上傳到伺服器

image-20200926171024997

使用jar包

hadoop jar jar包路徑 jar包main方法路徑 變數值

image-20200926171428240

相關文章