久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java API 與HBase交互實(shí)例

 昵稱23016082 2016-09-13


HBase提供了Java Api的訪問接口,,掌握這個(gè)就跟Java應(yīng)用使用RDBMS時(shí)需要JDBC一樣重要


HBase提供了Java Api的訪問接口,掌握這個(gè)就跟Java應(yīng)用使用RDBMS時(shí)需要JDBC一樣重要

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片
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.KeyValue; 
import org.apache.hadoop.hbase.client.Delete; 
import org.apache.hadoop.hbase.client.Get; 
import org.apache.hadoop.hbase.client.HBaseAdmin; 
import org.apache.hadoop.hbase.client.HTable; 
import org.apache.hadoop.hbase.client.HTablePool; 
import org.apache.hadoop.hbase.client.Put; 
import org.apache.hadoop.hbase.client.Result; 
import org.apache.hadoop.hbase.client.ResultScanner; 
import org.apache.hadoop.hbase.client.Scan; 
import org.apache.hadoop.hbase.util.Bytes; 
 
public class Hbase { 
    // 聲明靜態(tài)配置 
    static Configuration conf = null; 
    static { 
        conf = HBaseConfiguration.create(); 
        conf.set("hbase.zookeeper.quorum", "localhost"); 
    } 
 
    /* 
     * 創(chuàng)建表 
     *  
     * @tableName 表名 
     *  
     * @family 列族列表 
     */ 
    public static void creatTable(String tableName, String[] family) 
            throws Exception { 
        HBaseAdmin admin = new HBaseAdmin(conf); 
        HTableDescriptor desc = new HTableDescriptor(tableName); 
        for (int i = 0; i < family.length; i++) { 
            desc.addFamily(new HColumnDescriptor(family[i])); 
        } 
        if (admin.tableExists(tableName)) { 
            System.out.println("table Exists!"); 
            System.exit(0); 
        } else { 
            admin.createTable(desc); 
            System.out.println("create table Success!"); 
        } 
    } 
 
    /* 
     * 為表添加數(shù)據(jù)(適合知道有多少列族的固定表) 
     *  
     * @rowKey rowKey 
     *  
     * @tableName 表名 
     *  
     * @column1 第一個(gè)列族列表 
     *  
     * @value1 第一個(gè)列的值的列表 
     *  
     * @column2 第二個(gè)列族列表 
     *  
     * @value2 第二個(gè)列的值的列表 
     */ 
    public static void addData(String rowKey, String tableName, 
            String[] column1, String[] value1, String[] column2, String[] value2) 
            throws IOException { 
        Put put = new Put(Bytes.toBytes(rowKey));// 設(shè)置rowkey 
        HTable table = new HTable(conf, Bytes.toBytes(tableName));// HTabel負(fù)責(zé)跟記錄相關(guān)的操作如增刪改查等// 
                                                                    // 獲取表 
        HColumnDescriptor[] columnFamilies = table.getTableDescriptor() // 獲取所有的列族 
                .getColumnFamilies(); 
 
        for (int i = 0; i < columnFamilies.length; i++) { 
            String familyName = columnFamilies[i].getNameAsString(); // 獲取列族名 
            if (familyName.equals("article")) { // article列族put數(shù)據(jù) 
                for (int j = 0; j < column1.length; j++) { 
                    put.add(Bytes.toBytes(familyName), 
                            Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j])); 
                } 
            } 
            if (familyName.equals("author")) { // author列族put數(shù)據(jù) 
                for (int j = 0; j < column2.length; j++) { 
                    put.add(Bytes.toBytes(familyName), 
                            Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j])); 
                } 
            } 
        } 
        table.put(put); 
        System.out.println("add data Success!"); 
    } 
 
    /* 
     * 根據(jù)rwokey查詢 
     *  
     * @rowKey rowKey 
     *  
     * @tableName 表名 
     */ 
    public static Result getResult(String tableName, String rowKey) 
            throws IOException { 
        Get get = new Get(Bytes.toBytes(rowKey)); 
        HTable table = new HTable(conf, Bytes.toBytes(tableName));// 獲取表 
        Result result = table.get(get); 
        for (KeyValue kv : result.list()) { 
            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("-------------------------------------------"); 
        } 
        return result; 
    } 
 
    /* 
     * 遍歷查詢hbase表 
     *  
     * @tableName 表名 
     */ 
    public static void getResultScann(String tableName) throws IOException { 
        Scan scan = new Scan(); 
        ResultScanner rs = null; 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        try { 
            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("-------------------------------------------"); 
                } 
            } 
        } finally { 
            rs.close(); 
        } 
    } 
 
    /* 
     * 遍歷查詢hbase表 
     *  
     * @tableName 表名 
     */ 
    public static void getResultScann(String tableName, String start_rowkey, 
            String stop_rowkey) throws IOException { 
        Scan scan = new Scan(); 
        scan.setStartRow(Bytes.toBytes(start_rowkey)); 
        scan.setStopRow(Bytes.toBytes(stop_rowkey)); 
        ResultScanner rs = null; 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        try { 
            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("-------------------------------------------"); 
                } 
            } 
        } finally { 
            rs.close(); 
        } 
    } 
 
    /* 
     * 查詢表中的某一列 
     *  
     * @tableName 表名 
     *  
     * @rowKey rowKey 
     */ 
    public static void getResultByColumn(String tableName, String rowKey, 
            String familyName, String columnName) throws IOException { 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        Get get = new Get(Bytes.toBytes(rowKey)); 
        get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); // 獲取指定列族和列修飾符對(duì)應(yīng)的列 
        Result result = table.get(get); 
        for (KeyValue kv : result.list()) { 
            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("-------------------------------------------"); 
        } 
    } 
 
    /* 
     * 更新表中的某一列 
     *  
     * @tableName 表名 
     *  
     * @rowKey rowKey 
     *  
     * @familyName 列族名 
     *  
     * @columnName 列名 
     *  
     * @value 更新后的值 
     */ 
    public static void updateTable(String tableName, String rowKey, 
            String familyName, String columnName, String value) 
            throws IOException { 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        Put put = new Put(Bytes.toBytes(rowKey)); 
        put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), 
                Bytes.toBytes(value)); 
        table.put(put); 
        System.out.println("update table Success!"); 
    } 
 
    /* 
     * 查詢某列數(shù)據(jù)的多個(gè)版本 
     *  
     * @tableName 表名 
     *  
     * @rowKey rowKey 
     *  
     * @familyName 列族名 
     *  
     * @columnName 列名 
     */ 
    public static void getResultByVersion(String tableName, String rowKey, 
            String familyName, String columnName) throws IOException { 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        Get get = new Get(Bytes.toBytes(rowKey)); 
        get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); 
        get.setMaxVersions(5); 
        Result result = table.get(get); 
        for (KeyValue kv : result.list()) { 
            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("-------------------------------------------"); 
        } 
        /* 
         * List<?> results = table.get(get).list(); Iterator<?> it = 
         * results.iterator(); while (it.hasNext()) { 
         * System.out.println(it.next().toString()); } 
         */ 
    } 
 
    /* 
     * 刪除指定的列 
     *  
     * @tableName 表名 
     *  
     * @rowKey rowKey 
     *  
     * @familyName 列族名 
     *  
     * @columnName 列名 
     */ 
    public static void deleteColumn(String tableName, String rowKey, 
            String falilyName, String columnName) throws IOException { 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        Delete deleteColumn = new Delete(Bytes.toBytes(rowKey)); 
        deleteColumn.deleteColumns(Bytes.toBytes(falilyName), 
                Bytes.toBytes(columnName)); 
        table.delete(deleteColumn); 
        System.out.println(falilyName + ":" + columnName + "is deleted!"); 
    } 
 
    /* 
     * 刪除指定的列 
     *  
     * @tableName 表名 
     *  
     * @rowKey rowKey 
     */ 
    public static void deleteAllColumn(String tableName, String rowKey) 
            throws IOException { 
        HTable table = new HTable(conf, Bytes.toBytes(tableName)); 
        Delete deleteAll = new Delete(Bytes.toBytes(rowKey)); 
        table.delete(deleteAll); 
        System.out.println("all columns are deleted!"); 
    } 
 
    /* 
     * 刪除表 
     *  
     * @tableName 表名 
     */ 
    public static void deleteTable(String tableName) throws IOException { 
        HBaseAdmin admin = new HBaseAdmin(conf); 
        admin.disableTable(tableName); 
        admin.deleteTable(tableName); 
        System.out.println(tableName + "is deleted!"); 
    } 
 
    public static void main(String[] args) throws Exception { 
 
        // 創(chuàng)建表 
        String tableName = "blog2"; 
        String[] family = { "article", "author" }; 
        // creatTable(tableName, family); 
 
        // 為表添加數(shù)據(jù) 
 
        String[] column1 = { "title", "content", "tag" }; 
        String[] value1 = { 
                "Head First HBase", 
                "HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data.", 
                "Hadoop,HBase,NoSQL" }; 
        String[] column2 = { "name", "nickname" }; 
        String[] value2 = { "nicholas", "lee" }; 
        addData("rowkey1", "blog2", column1, value1, column2, value2); 
        addData("rowkey2", "blog2", column1, value1, column2, value2); 
        addData("rowkey3", "blog2", column1, value1, column2, value2); 
 
        // 遍歷查詢 
        getResultScann("blog2", "rowkey4", "rowkey5"); 
        // 根據(jù)row key范圍遍歷查詢 
        getResultScann("blog2", "rowkey4", "rowkey5"); 
 
        // 查詢 
        getResult("blog2", "rowkey1"); 
 
        // 查詢某一列的值 
        getResultByColumn("blog2", "rowkey1", "author", "name"); 
 
        // 更新列 
        updateTable("blog2", "rowkey1", "author", "name", "bin"); 
 
        // 查詢某一列的值 
        getResultByColumn("blog2", "rowkey1", "author", "name"); 
 
        // 查詢某列的多版本 
        getResultByVersion("blog2", "rowkey1", "author", "name"); 
 
        // 刪除一列 
        deleteColumn("blog2", "rowkey1", "author", "nickname"); 
 
        // 刪除所有列 
        deleteAllColumn("blog2", "rowkey1"); 
 
        // 刪除表 
        deleteTable("blog2"); 
 
    } 



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多