zoukankan      html  css  js  c++  java
  • HBase第二章 基本API

    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>cn.itcast.hbase</groupId>
        <artifactId>hbase</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>2.6.4</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-client</artifactId>
                <version>0.99.2</version>
            </dependency>
        </dependencies>
    </project>

    2、API操作

    package cn.itcast.bigdata.hbase;
    
    import java.io.IOException;
    import java.util.NavigableMap;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.Cell;
    import org.apache.hadoop.hbase.CellUtil;
    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.Admin;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    import org.apache.hadoop.hbase.client.Delete;
    import org.apache.hadoop.hbase.client.Get;
    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.client.Table;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class TestApi {
        private Configuration config;
        private Connection connection;
    
        @Before
        public void before() throws IOException {
            config = HBaseConfiguration.create();
            // 配置zookeeper
            config.set("hbase.zookeeper.quorum", "hadoop2,hadoop3,hadoop4");
            config.set("hbase.zookeeper.property.clientPort", "2181");
            connection = ConnectionFactory.createConnection(config);
    
        }
    
        /**
         * @throws IOException
         *             创建表
         */
        @Test
        public void testCreateTable() throws IOException {
            Admin admin = connection.getAdmin();
            // 表的描述类
            HTableDescriptor desc = new HTableDescriptor(TableName.valueOf("user"));
            // 列族的描述类
            HColumnDescriptor family1 = new HColumnDescriptor("f1");
            // 将列族信息和表的描述类进行关联
            desc.addFamily(family1);
            HColumnDescriptor family2 = new HColumnDescriptor("f2");
            desc.addFamily(family2);
            // 根据描述信息创建表
            admin.createTable(desc);
            admin.close();
        }
    
        /**
         * @throws IOException
         *             删除表
         */
        @Test
        public void testDeleteTable() throws IOException {
            Admin admin = connection.getAdmin();
            TableName tableName = TableName.valueOf("user");
            admin.disableTable(tableName);
            admin.deleteTable(tableName);
            admin.close();
        }
    
        /**
         * @throws IOException
         *             添加数据
         */
        @Test
        public void testPut() throws IOException {
            Table table = connection.getTable(TableName.valueOf("user"));
            Put put = new Put("00001".getBytes());
            // put 'user','00001','info1:name','zhangsan'
            put.add("f1".getBytes(), "name".getBytes(), "zhangsan".getBytes());
            table.put(put);
            table.close();
    
        }
    
        /**
         * 删除数据
         * 
         * @throws IOException
         */
        @Test
        public void testDelete() throws IOException {
            Table table = connection.getTable(TableName.valueOf("user"));
            Delete delete = new Delete("00001".getBytes());
            table.delete(delete);
            table.close();
        }
    
        /**
         * @throws IOException
         *             单条查询
         */
        @Test
        public void testGet() throws IOException {
            Table table = connection.getTable(TableName.valueOf("user"));
            Get get = new Get("00001".getBytes());
            Result row = table.get(get);
            // 获取family f1下所有的名字 f1:name f1:age
            NavigableMap<byte[], byte[]> familyMap = row.getFamilyMap("f1".getBytes());
            // 遍历
            for (byte[] nav : familyMap.navigableKeySet()) {
                // 打印名字:name
                System.out.println(new String(nav));
                // 获取name对应的值:zhangsan
                byte[] value = row.getValue("f1".getBytes(), nav);
                System.out.println(new String(value));
            }
            table.close();
        }
    
        /**
         * @throws IOException
         *             批量查询
         */
        @Test
        public void testScanner() throws IOException {
            Table table = connection.getTable(TableName.valueOf("user"));
            Scan scan = new Scan();
            // 不设置起始和结束的话 为全表查询
            scan.setStartRow("00001".getBytes());// 设置起始row
            scan.setStopRow("000010".getBytes());// 设置结束 row
            ResultScanner scanner = table.getScanner(scan);
            for (Result result : scanner) {
                Cell[] rawCells = result.rawCells();
                for (Cell cell : rawCells) {
                    System.out.println("value = " + new String(CellUtil.cloneValue(cell)));
                    System.out.println("family = " + new String(CellUtil.cloneFamily(cell)));
                    System.out.println("qualifier = " + new String(CellUtil.cloneQualifier(cell)));
    
                }
            }
            table.close();
    
        }
    
        /**
         * @throws IOException
         *             关闭连接
         */
        @After
        public void after() throws IOException {
            connection.close();
        }
    }
  • 相关阅读:
    DMALL刘江峰:生鲜市场具有巨大O2O改造空间
    互联网产品经理能力体系
    Review Board——在线代码审查工具
    Java Dns Cache Manipulator
    Keepalived 双机web服务宕机检测切换系统软件
    weblogic性能调优参考
    spring的ResultSetWrappingSqlRowSet使用rs.getTimestamp取oracle数据库时分秒问题
    oracle ORA-01747(系统保留关键字)user.table.column, table.column 或列说明无效 hibernate映射oracle保留关键字
    javascript模块化编程(AMD规范的加载器)
    oracle定时运行 存储过程
  • 原文地址:https://www.cnblogs.com/zhaobingqing/p/8184731.html
Copyright © 2011-2022 走看看